MSTest Unit 테스트로 실행되는 CodedUI 테스트 세트가 있습니다. AssemblyCleanup에는 외부 데이터베이스에 저장된 테스트 실행 결과를 전자 메일로 보낼 메서드가 있습니다. 마지막 실행 세션 동안 얼마나 많은 단위 테스트가 실행되었는지 프로그래밍 방식으로 결정할 수 있습니까? 우리가 10 회 미만의 테스트를 수행하는 중이라면 이메일을 보내고 싶지 않습니다. 이렇게하면 테스트를 디버깅 할 때가 아니라 전체 CodedUI Suite를 실행할 때만 전자 메일을받을 수 있습니다. 현재 SendEmail 플래그를 수동으로 설정해야하지만 프로그래밍 방식으로 결정해야합니다.얼마나 많은 단위 테스트가 실행되었는지 프로그래밍 방식으로 결정합니까?
답변
실행 된 테스트의 수를 유지하는 기본 테스트 클래스를 사용하십시오. 다른 모든 테스트 클래스는이 클래스를 상속하고 TestInitialize
에서 해당 속성을 증가시킵니다.
다음 코드를 실행하고 테스트 결과를 확인하십시오.
[TestClass]
public class BaseTestClass
{
private static int _executedTests;
private static int _passedTests;
[AssemblyCleanup()]
public static void AssemblyCleanup()
{
Console.WriteLine("Total tests executed: {0}", _executedTests);
Console.WriteLine("Total passed tests: {0}", _passedTests);
}
protected void IncrementTests()
{
_executedTests++;
}
protected void IncrementPassedTests()
{
_passedTests++;
}
}
[TestClass]
public class TestClass : BaseTestClass
{
[TestInitialize]
public void TestInitialize()
{
IncrementTests();
}
[TestCleanup]
public void TestCleanup()
{
if (TestContext.CurrentTestOutcome == UnitTestOutcome.Passed)
{
IncrementPassedTests();
}
}
[TestMethod]
public void TestMethod1()
{
}
[TestMethod]
public void TestMethod2()
{
Assert.Fail();
}
public TestContext TestContext { get; set; }
}
참고 : 같은 코드가 CodedUITests
방금 구현하려고했는데 다른 클래스에서 테스트를 실행할 때마다 새로운 객체가 만들어 질 것을 의미하는 다중 테스트 클래스가 있습니다. 이 클래스들 각각은 BaseTestClass를 상속 한 TestClass의 새로운 인스턴스입니다. 이것은 각 TestClass가 자신의 수를 가질 것이라는 것을 의미합니다. 이 정보에 액세스 할 수없는 AssemblyCleanup에서 전자 메일을 보내고 있는지 확인합니다. – PBMax
@PBMax, 내 코드는 몇개의 테스트 클래스와 상관없이 작동합니다. 보시다시피,'BaseTestClass'의 카운터는 정적이므로 테스트 클래스의 모든 다른 인스턴스에 대해 동일합니다. 다음 테스트 실행시에만 재설정됩니다. 그것을 시도하십시오 ... – Schaliasos
위대한. 나는 그것을 시도 할 것이다! – PBMax
- 1. 얼마나 많은 테스트가 충분합니까?
- 2. 각 단위 테스트가 얼마나 테스트해야합니까?
- 3. 단위 테스트가 항상 실행되는 속도는 얼마나 빠릅니까?
- 4. PHP, 얼마나 많은 코드가 실행되었는지 확인하는 방법은 무엇입니까?
- 5. IFS에서 파일의 CCSID를 프로그래밍 방식으로 어떻게 결정합니까?
- 6. 단위 테스트 SerializableConfigurationSection 프로그래밍 방식으로
- 7. 프로그래밍 방식으로 바탕 화면의 크기를 어떻게 결정합니까?
- 8. 함수의 평가가 할당되었는지 프로그래밍 방식으로 결정합니까?
- 9. Groove 작업 영역의 크기를 프로그래밍 방식으로 결정합니까?
- 10. SharePoint 목록의 크기는 어떻게 결정합니까? 프로그래밍 방식으로
- 11. Windows에서 전력 사용량을 프로그래밍 방식으로 결정합니까?
- 12. Windows DPI 설정을 프로그래밍 방식으로 결정합니까?
- 13. Django : 프로그래밍 방식으로 관리 페이지 경로를 결정합니까?
- 14. 프로그래밍 방식으로 Qt 스타일 시트 옵션을 결정합니까?
- 15. 프로그래밍 방식으로 실패한 URLLoader를 어떻게 결정합니까?
- 16. Backbone.js .on 콜백을 프로그래밍 방식으로 결정합니까?
- 17. 프로그래밍 방식으로 powershell에서 supportedRuntime을 어떻게 결정합니까?
- 18. 단위 테스트가 기능을 증명합니까?
- 19. 장치가 오디오 잭에 연결되어 있는지 프로그래밍 방식으로 어떻게 결정합니까?
- 20. 운영 체제는 각 스레드에 얼마나 많은 스택 공간을 할당해야하는지 결정합니까?
- 21. Quartz에서 작업이 얼마나 오래 실행되었는지 알아보기
- 22. 스윙 타이머가 얼마나 오래 실행되었는지 찾으십시오.
- 23. 중복 단위 테스트가 정상입니까?
- 24. 단위 테스트가 실행되지 않습니다.
- 25. 단위 테스트가 실패 비교
- 26. 단위 테스트가 필요합니다.
- 27. 단위 테스트가 Cobertura와 느립니다.
- 28. 단위 테스트가 충분합니까?
- 29. 방법 단위 테스트가 NUnit과
- 30. 모든 단위 테스트가 성공적일까요?
이 나에게 중요한 해킹/안티 패턴 같은 소리에 사용할 수 있습니다. 단위 테스트 세트에 이런 종류의 툴링을 추가하고 싶지 않습니다. –
+1. 파괴 테스트를 통해 테스트가 끝나면 결과가 전송되지 않습니다. 더 좋은 방법은 vstest.console.exe/logger : trx를 사용하고 테스트 결과를 위해 trx 파일을 구문 분석하는 것입니다. 이 경로를 결정하려면 http://stackoverflow.com/questions/14483837/specifying-results-filename-for-vstest-console-exe를 참조하십시오. –