2015-03-03 2 views
2

В настоящее время у меня есть несколько тестов, которые гарантируют, что для каждого класса, реализующего определенный интерфейс, я получил некоторые уважения.Можно ли создать динамический модульный тест?

Это в настоящее время работает в приложении winform, которое позволяет мне давать результат для каждого класса, если они в порядке или что-то не так.

Я хотел бы преобразовать это в TestClass/TestMethod, но в настоящее время я не вижу, как это сделать.

Вопрос заключается в том, что мне нужно, чтобы получить результаты для каждого класса (или, по крайней мере, есть ошибки для каждого отдельного класса, который не работает

В настоящее время я имею этот кусок кода:.

foreach (Type type in GetTypesToCheck()) 
{ 
    m_logger.Debug("Checking type " + type.FullName); 
    FieldInfo staticField; 
    dynamic definition; 
    if (CheckStaticField(type, out staticField) && CheckDefinitionPresent(type) && CheckParentDefinition(type, staticField, out definition) && CheckRegistration(type, definition) && 
     CheckSubTypes(type, definition)) 
    { 
     m_logger.Information(type.FullName + ": OK"); 
    } 
} 

есть ли способ, чтобы сделать этот вид проверки с UnitTests и имеющими один результатом на класс (или несколько результатов для каждого класса)?

+0

Я предполагаю, что вы используете MSTest в качестве основы тестирования? – vcsjones

+0

Да, простите, я не думал упоминать об этом – J4N

+0

. Итак, вы в основном хотите сконденсировать несколько тестовых случаев в один тестовый пример? Тест может быть успешным или неудачным в MSTest, поэтому, если у вас был хотя бы один провал, все закончилось бы. Это кажется контрпродуктивным. –

ответ

0

Вы можете хранить неудачные виды во временной коллекции, а затем выполнить требуемое утверждение (s) в этой коллекции.

Ниже приведен пример:

[TestClass] 
public class UnitTest1 
{ 

    [TestMethod] 
    public void TestMethod1() 
    { 
     var failedTypes = new List<Type>(); //to keep failed types 

     foreach (Type type in GetTypesToCheck()) 
     { 
      FieldInfo staticField; 
      dynamic definition; 
      if (!CheckStaticField(type, out staticField) 
        || !CheckDefinitionPresent(type) 
        || !CheckParentDefinition(type, staticField, out definition) 
        || !CheckRegistration(type, definition) 
        || !CheckSubTypes(type, definition)) 
       failedTypes.Add(type); 
     } 

     Assert.IsTrue(
      failedTypes.Count == 0, 
      "Failed types: " + string.Join(", ", failedTypes) 
      ); 
    } 
} 
Смежные вопросы