2016-12-14 5 views
1

단위 테스트 관행에 익숙하지 않습니다. 아래 코드에있는 문제 TestEnums 첫 번째 Assert가 반복 될 때 중단/중단 된 것으로 보입니다. 실패합니다. 즉, 테스트 탐색기에 실패한 오류 메시지 하나만 보여줍니다.단위 테스트, 컬렉션의 모든 개체에 대한 Assert 결과를 표시하도록 자동화합니다.

나는하여 테스트 탐색기에서 주장 실패 모든, 즉, EnumHasRepeatedValues 방법의 어설 실패한 모든 테스트 열거를 표시하려면이 코드를 적용하고 싶습니다.

Imports Microsoft.VisualStudio.TestTools.UnitTesting 
Imports System.Reflection 

<TestClass()> 
Public Class Application 

    <TestMethod()> 
    Public Sub TestEnums() 
     Dim ass As Assembly = Assembly.Load("Elektro.Application") 

     Dim types As IEnumerable(Of Type) = 
      From t As Type In ass.GetTypes() Where t.IsEnum 

     For Each t As Type In types 
      EnumHasRepeatedValues(t) 
     Next 
    End Sub 

    Public Sub EnumHasRepeatedValues(ByVal t As Type) 
     Assert.AreEqual([Enum].GetValues(t).Length, 
         [Enum].GetNames(t).Length, 
         String.Format("Enum {0}.{1} has defined repeated values.", 
             t.Namespace, t.Name)) 
    End Sub 

End Class 
+0

데이터 원본 사용에 대한 [this] (https://msdn.microsoft.com/en-us/library/ms182527.aspx)를 읽었습니까? –

+0

@Pro Grammer는 의견을 보내 주셔서 감사합니다. 그러나 그런 종류의 솔루션이이 문제를 해결하는 데 도움이 될지 모르겠지만 MSDN 예제와 같이 데이터베이스를 생성해야합니까? – ElektroStudios

+0

필자가 본 것부터 [CSV, XML 또는 로컬 데이터 소스] (http://stackoverflow.com/a/14139050/6144259)를 테스트 라이브러리에 임베드 할 수 있습니다. 그것은 전체 데이터베이스가 될 필요가 없습니다. 또한 도움이 될 수도있는 [this] (http://stackoverflow.com/a/13710788/6144259)을 발견했습니다. –

답변

2

테스트 방법은 서로 독립적이어야합니다. 다른 테스트 메소드에서 테스트 메소드를 호출하지 마십시오.

첫 번째 어설 션이 실패 할 때 정의에 의한 테스트가 실패합니다. 그 때문에 하나의 테스트 실패 만 표시됩니다.

모든 열거 형 값을 테스트하려면 각각에 대해 별도의 테스트를 작성하십시오.

+0

답해 주셔서 감사합니다.하지만 그럴 수는 없지만 실제로는 200 개 이상의 열거 형이 계산됩니다 테스트 할 모든 어셈블리. 그 이유 때문에 노출 된 방식으로 열거 형 테스트를 자동화해야 할 필요가 있습니다. – ElektroStudios

+0

글쎄, 테스트가 한 번 실패하고, 하나의 메시지 만 보여준 다음, 그 오류를 수정하고, 다시 테스트를 실행 한 다음 다시 실패합니다. 하나의 오류 메시지가 항상 발생합니다. 즉, 느슨한 시간입니다. 생산적이지는 않습니다. 왜냐하면 나에게 모든 오류/실패한 테스트를 한 번에 하나씩 알리는 것이 더 좋습니다. (내 하찮은 영어 실력에 죄송하다는 말씀을 드리고 싶습니다) – ElektroStudios