2012-03-21 3 views
41

내 함수가 예외를 throw하지 않도록 NUnit 테스트를 만들고 싶습니다. 특정 방법이 있습니까? 아니면 그냥 써야합니까?NUnit : 예상하지 못한 예외가있는 테스트

[Test] 
public void noExceptionTest() { 
    testedFunction(); 
} 

예외가 throw되지 않으면 성공할 것입니다.

+2

정말 테스트하고 싶은 게 전부입니까? testedFunction이 no-op이면 테스트를 통과한다는 것을 알 수 있습니다. – Martijn

+0

귀하의 방법은 던지지 않는 특별한 요구 사항이 있습니까? 또는 * 내 코드가 * throw하지 않기 때문에 작동합니다. 나중에 하나, 당신 migth 체크 [그] (http://stackoverflow.com/questions/8788558/should-i-test-that-methods-dont-throw-exceptions) [두] (http : // 일반적으로 당신이 그렇게하지 않는 이유는 질문에 대한 의문점을/stackoverflow.com/questions/9417213/c-how-do-i-check-no-exception-occurred-in-my-unit-test) 질문. 당신은 그런 시험에서 아무것도 얻지 못할 것입니다. –

+1

@jimmy_keen 예외적 인 경우로, Dispose()를 두 번 호출해도 throw되지 않는다는 것을 테스트하는 데 사용되었습니다. – Gareth

답변

70
Assert.DoesNotThrow(() => { /* custom code block here*/}); 

하거나 방법 자세한 내용은

Assert.DoesNotThrow(() => CallMymethod()); 

2

예, 예외는 발생하지 않습니다. -> 테스트 합격. 다시 던지기가없는 try-catch 블록이 있다면 너무 지나치게 빠질 것입니다.

2

당신이 올바른지 NUnit Exception Asserts를 참조하십시오. 예외가 있으면 테스트가 실패합니다.

당신이

[ExpectedException(typeof(YourException)) ] 
public void TestMethod() 
{ 
    ... 
} 

를 지정하거나 @sll 말한대로, 당신은보다 구체적인

Assert.DoesNotThrow 

assertion를 사용하지 않으면.

4

예외를 발생시키지 않는 것이 일반적인 조치입니다. 테스트 결과 예외가 발생하지 않았는지를 성공적으로 테스트합니다.

1

단위 테스트 로직과 관련된 문제가 있다고 생각합니다. 특정 입력에 따라 특정 예외가 예상되는 경우 예상 예외로 선언합니다. 함수가 제대로 작동하는지 여부를 확인하고이 올바른 동작 중에 예외가 발생하지 않는다고 생각하는 경우 그냥 쓰고 예외가 발생하면 테스트가 실패합니다.

코드가 제대로 작동하는 것 같습니다. 반면에 예외를 확인하지 않으면 단위 테스트를위한 적절한 방법이 될 수 없습니다. 단위 테스트에서 일반적으로 일부 출력 (예상 값)을 기대하고, 실제 출력 (실제 값)을 가지며 예상 값과 실제 값이 동일하다는 것을 주장합니다. NUnit과 3.0 Constraint Model 유형을 사용

8

다음과 같은 코드가 보일 것이다 주장 :

Assert.That(() => SomeMethod(actual), Throws.Nothing);

이 예는 NUnit wiki에서 가져옵니다.

관련 문제