2013-05-22 1 views
1

이미 검색했지만 NUnit에서 하나의 항목 만 발견했습니다. JUnit은 여전히 ​​NUnit과 조금 다르므로 내 질문을하기 위해 전진하겠습니다.JUnit - tearDown()의 오류 메시지에 액세스하십시오.

testUp(), test() 및 tearDown()이있는 테스트 케이스가 하나 있습니다. setUp() 및 test()에서 exeptions를 throw하는 대신 fail ("Some text here ...") 함수를 사용합니다. 또한 시험 때문에 시험 할 수도있는 몇 가지 주장이 있습니다. 이제는 tearDown() 함수 (prolbem)에서 테스트 케이스가 실패한 이유를 얻은 다음 파일에 문자열로 쓰고 싶습니다. (실패 이유를 얻을 수 있다면 아무 문제가 없습니다). 내 질문은 어떻게 테스트 케이스의 실패에 대한 정보에 액세스 할 수 있는가이다. tearDown() 함수에서 테스트가 전혀 실패했는지 어떻게 확인할 수 있습니까?

감사합니다, SH 여기

+0

코드를 제공해 주시겠습니까? – Max

+0

'tearDown()'메소드는 실패에 대한 정보를 제공하지 않는다. 그게'TestRunner'의 일입니다. –

+0

tearDown 메소드가 실패에 대한 정보를 제공하지 않아야한다는 것을 알고 있습니다. 그러나 한 가지 테스트 메소드를 사용하기 때문에 테스트 러너는 약간의 문제가있는 것처럼 보입니다. 또한 전체 테스트 스위트가 아닌 각 테스트 케이스에 대한 설명서를 원합니다. – shatala

답변

1

는이 작업을 수행 할 수있는 프로그램 방법입니다.

Throwable thrownException = null; 

@Before 
public void setup{ thrownException = null; } 

@Test 
public void test(){ 
    try{ 
     // do test here 
    } catch (Throwable t){ 
     thrownException = t; 
     throw t; 
    } 
} 

@After 
public void cleanup(){ 
     if (thrownException != null) 
      .... 
} 

또 다른 옵션은 오류 발생시 필요한 작업을 수행하는 사용자 지정 규칙을 만드는 것입니다.

+0

Unnice하지만 나는 그것이 작동 될 것 같아요! 예외를 던지지 않고 fail() 및 assertThat(), assert ...() 메서드를 사용하면 어떻게됩니까? assertEqual() 함수에 의해 throw 된 예외를 catch 할 수 있습니까? – shatala

+1

@ user2407819 네, 당신은'AssertionError'를 잡을 수 있습니다. 그러나'Throwable'은'AssertionError'의 수퍼 클래스이므로 위의 코드로 충분합니다. –

+0

정말 불만이지만 Rule Route가 더 복잡합니다. –

관련 문제