2.1. "작업 시작" 버튼을 클릭 한 시간 부터 "작업 완료" 버튼을 클릭 했을 때 까지의 시간을 잽니다.

이걸 좀 더 잘개 쪼개야 겠습니다. 시간은 초 단위가 좋을 것 같습니다.
2.1.1. "작업 시작" 버튼을 클릭하면 시간을 재기.

    @Test public void getStartTime(){
        int startTime = new Work("work1").start();
        assertFalse(startTime == 0);
    }

다음 작업을 하기 전에 startTime을 Work 클래스에 저장해 둬야 할 것 같아졌습니다. 그래야 나중에 작업이 완료 됐을 때 계산할 수 있으니깐요..

2.1.2. startTime 저장하기

    @Test public void getStartTime(){
        Work work = new Work("work1");
        work.start();
        assertNotNull(work.getStartTime());
    }

2.1.2. "작업 완료" 버튼을 클릭하면 현재 시간에서 작업 시작 시간을 빼서 소요 시간 구하기.
   
    @Test public void getWorkedTime(){
        Work work = new Work("work1");
        work.start();
        long workedTimeInMilli = work.end();
        assertEquals(work.getEndTime() - work.getStartTime(), workedTimeInMilli);
        assertEquals(workedTimeInMilli * 1000, work.getWorkedTime());
    }

2.2. "일시 정지" 버튼을 클릭하면 시간 재는 걸 잠시 중단 합니다. "작업 시작"버튼을 클릭하면 다시 이어서 시간을 잽니다.

이 작업을 구현하려니까 시간을 가지고 테스트 하는게 엄청 불편하게 느껴집니다. start와 end를 할 때 로그 메시지를 기록 하도록 하고 그 메시지를 확인 하도록 테스트를 변경합니다.

    @Test public void pausedTime(){
        Work work = new Work("work1");
        work.start();
        work.pause();
        work.reStart();
        long workedTime = work.end();
        assertEquals("작업 시작 -> 일시 중지 -> 다시 시작 -> 작업 종료", work.getLog().toString());
        assertEquals((work.pause() - work.start()) + (work.getEndTime() - work.reStart()), workedTime);
    }

2.3. "작업 완료" 버튼을 클릭하면 해당 작업한 시간이 기록됩니다. 이건 이미 위에 것들을 구현하다보니 구현이 되버렸군요.

현재 까지 작업 상황을 보면

- 시작 -> 종료 :: 2.1.
- 시작 -> 일시 정지 -> 다시 시작 -> 종료 :: 2.2.
- 시작 -> 일시 정지 -> 종료
- 시작 -> 일시 정지 -> 다시 시작 -> 일시 정지 -> 다시 시작 -> 종료

미쳐 아래 두 가지 경우 수를 생각 못했었군요.

그리고 작업한 시간을 출력해보니 전부 0으로 나오기 때문에 수치가 정확한지 가늠할 수 있는 뭔가 더 좋은 테스트 방안을 모색해 봐야겠습니다.

테스트를 위해서 log를 만들었지만 이 것이 차후 프로그램에서 필요한가를 생각해보니.. 시간 테스트를 위한 대안이였는데 전혀 적절한 대안이 되진 못한 것이 절 초라하게 만드는군요. ㅠ.ㅠ