2016-12-14 7 views
1

Я новичок в методах тестирования модулей, проблема в том, что у меня есть код ниже, метод TestEnums, кажется, останавливает/прерывает итерацию, когда первая Assert fail, я имею в виду, он показывает только одно сообщение об ошибке в проводнике тестирования .Unit Testing, автоматизировать отображение результата Assert для каждого объекта в коллекции

Я хотел бы адаптировать этот код, чтобы показать все неудавшегося утверждает в Test Explorer,, то есть, каждый испытанный Enum, что провалил 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