NUMPERT (3) (3.8.1) 확장을 작성하여 테스트를 실패하면 Debug.Assert(...)
이 자동으로 실행되거나 중지되지 않고 실패 할 수 있습니다. 어설 션 대화 상자가 나타나기 때문에).실패한 Debug.Assert에서 NUnit 3 확장 테스트 실패
NUnit 2 addin에서 모든 디버그 추적 수신기의 등록을 취소하고 예외 (예 : here 설명)를 내 자신의 코드를 추가하여 추가 할 수있었습니다. 그러나 이것은 NUnit 3에서 더 이상 작동하지 않는 것 같습니다.
확장 프로그램을 성공적으로 배포 할 수 있으며 코드가 실행 중입니다.
[Extension(Description = "Failed Assertions Tracker", EngineVersion = "3.4")]
public class TrackerEventListener : ITestEventListener
{
public void OnTestEvent(string report)
{
Console.WriteLine(report); // prints -> so I know this method is being called
Debug.Listeners.Clear();
Debug.Listeners.Add(new UnitTestTraceListener());
}
}
하지만, 내 단위 테스트는 불행하게도 여전히 DefaultTraceListener
가 설치되어 있는지 나를 보여줍니다.
[Test]
public void FailingAssertionShouldNotHang()
{
foreach (object listener in Debug.Listeners)
{
Console.WriteLine(listener.GetType().FullName);
}
Debug.Fail("I'm sorry. I've failed.");
}
그래서 테스트는 단순히 실패하는 대신 대화 상자를 표시합니다.
내가 뭘 잘못하고 있니? 실제 테스트가 다른 컨텍스트 (다른 AppDomain, process,?)에서 실행되기 때문에 정적 Listeners
컬렉션에 대한 호출이 비효율적이라고 생각합니다. 그러나 이것이 사실이라면 어떻게하면 내 문제를 해결할 수 있습니까?
이 될 수있다이 댓글 (https://stackoverflow.com/questions/2662041/can-i-configure-nunit-so-that-debug-fail-doesnt-show-a-message-box -when-i-run-m/2798663 # comment61962711_3184631) 도움이 될 것입니다. –
@AluanHaddad : 모든 테스트 픽스쳐에 대해 자신을 반복하고 싶지는 않습니다. 따라서 논리를 확장으로 쓰고 싶습니다. – Dejan
@AluanHaddad : 죄송합니다. 너무 빨리 읽었습니다. SetUpFixtures (https://github.com/nunit/docs/wiki/SetUpFixture-Attribute)를 사용하면 최소한 테스트 된 어셈블리 당 한 번만 로직을 만들 수 있습니다. 그것은 충분히 공정한 해결책 일 것입니다. – Dejan