2013-12-16 2 views
1

void-method Unit-Testing에 대한 몇 가지 질문이 있지만 제 질문은 다릅니다.
저는 자바를 배우므로 상사가 저의 임무에 다른 요구 사항을 가진 태스크를 제공합니다.jUnit에서 매우 간단한 void 메소드를 테스트하려면 어떻게해야합니까?

실제 작업에는 jUnit 테스트가> 60 %를 충족해야한다는 요구 사항이 있습니다. 그래서이 60 %에 도달하는 아주 간단한 방법을 테스트해야합니다. 때문에 인턴 문제의

public void updateGreen() { 
    // delete this outprint if the Power Manager works 
    System.out.println(onCommand + "-green"); 
    // p = Runtime.getRuntime().exec(command + "-green"); 
    // wait until the command is finished 
    // p.waitFor(); 
} 

, 내가 Runtime 작업과 명령을 실행할 수 없습니다 : 방법은 다음과 같다. 따라서이 방법에는 System.out 만 있습니다.

이렇게 여러 가지 방법이 있으므로이 방법에 대한 테스트는 전체 코드의 10 % 이상을 차지합니다.

이러한 방법을 테스트하는 것이 유용합니까? 예, 어떻게?

+0

를 사용하여 System.out에 기록 된 것을 테스트 할 수 있을까? 'updateGreen()'이'Runtime.exec()'를 호출 할 것인가 아니면 실제 결과를 호출 할 것인가? –

답변

4

을, 당신이 여기 테스트 할 수있는 것은 "updateScreen() 올바른 문자열을 사용한다는 것입니다 some-command-green "이고 System.out이 호출되고 있음을 나타냅니다. 이렇게하려면 System.out을 객체 필드에 추출하고 모의 문자 (spy())를 사용하여 모방하여 println에 제공된 문자열을 테스트 할 수 있습니다.

e.e. 테스트에서

class MyClass{ 
    PrintStream out = System.out; 

    public void updateGreen() { ... } 
} 

:

@Test 
public void testUpdate(){ 
    MyClass myClass = new MyClass(); 
    myClass.out = Mockito.spy(new PrintStream(...)); 

    // mock a call with an expected input 
    doNothing().when(myClass.out).println("expected command"); 

    myClass.updateGreen(); 

    // test that there was a call 
    Mockito.verify(myClass.out, Mockito.times(1)).println("expected command"); 
} 
+0

모키토에 대해 모르십니까? 이제 그것에 대해 읽어보십시오. 정말 멋지군요. 내가 찾은 것. –

+0

네, 조롱은 간단하지만 단위 테스트의 중요한 부분입니다. 네가 좋아하는 걸 듣고 좋았어. –

0

메서드가 성공적으로 실행되면 true를 반환하고 그렇지 않으면 false를 반환 할 수 있습니다. 이 문제를 쉽게 테스트 할 수 있습니다.

여기에 설명 된대로 또한,이 방법의 출력을 테스트 할 수

: Should we unit test console outputs?

하지만 내 경험 , 방법이 반환 참/거짓 낙관적 또는 비관적 값을 (이 훨씬 낫다, 1/0/-1 등)를 사용하여 상태를 나타냅니다.

당신은 또한 요구시 작동되는 플래그에 대한 getter 메소드 쓸 수있다 : 이러한 방법을 많이가있는 경우

public string getFlag(){ 
    // some logic here 
    return "green"; 

    // otherwise default to no flags 
    return ""; 
} 
0

당신은 onCommand + "-green" 당신이 단위 테스트에 무엇을 하시겠습니까? System Rules library.

관련 문제