2013-03-05 3 views
1

Есть ли способ указать сообщение для Assert.AreEqual(object, object, string), которое объединяет пользовательское сообщение с сообщением по умолчанию?пользовательское сообщение и сообщение по умолчанию

У меня есть следующий код:

foreach (var testCase in testCases) 
{ 
    Assert.AreEqual(testCase.Value, myObj.myMethod(testCase.Key), combinedMessage); 
} 

Я хотел бы указать ключ тестового случая в дополнение к примеру сообщение от структуры модульного тестирования VS ниже:

Assert.AreEqual failed. Expected:<True>. Actual:<False>.

Возможно что-то вроде Failed on the following test case: AB.

+0

Cant вы конкатенации 2 строки? – Blachshma

+0

Ошибка Assert.AreEqual не является статической. Я хотел бы использовать все, что выходит из рамки. –

ответ

3

Перегрузка сделает это за вас автоматически. В качестве теста я сделал этот метод испытания, чтобы увидеть, что результат будет:

[TestMethod] 
    public void Test() 
    { 
     Assert.AreEqual(true, false, "Failed on the following test case: AB"); 
    } 

И выход Сообщение об ошибке было: Assert.AreEqual failed. Expected:<True>. Actual:<False>. Failed on the following test case: AB

Параметр сообщений уже прилагается/в сочетании с сообщением по умолчанию.

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

foreach (var testCase in testCases) 
{ 
    Assert.AreEqual(testCase.Value, myObj.myMethod(testCase.Key), 
     "Failed on the following test case: " + testCase.Key.ToString()); 
} 

И если тестовые случаи должны иметь свое собственное сообщение, оно будет тогда иметь смысл, чтобы переместить пользовательское сообщение об ошибке для класса testCase. В рамках создания каждого из объектов можно задать эти три свойства, то:

testCase.Value = true; 
testCase.Key = "AB"; 
testCase.FailureMessage = "Failed on the following test case: AB"; 

Этот тип структуры позволило бы за то, что указанное сообщение, которое будет добавляться для каждого экземпляра TestCase. Это позволит тестовый модуль, чтобы выглядеть следующим образом:

foreach (var testCase in testCases) 
{ 
    Assert.AreEqual(testCase.Value, myObj.myMethod(testCase.Key), 
     testCase.FailureMessage)); 
} 

и выход в вашем примере выглядит как: Assert.AreEqual failed. Expected:<True>. Actual:<False>. Failed on the following test case: AB

+0

Это сработало отлично для меня. Благодарю. –

0

Не могли бы вы просто контактировать сообщение?

foreach (var testCase in testCases) 
{ 
    string message = string.Format("{0}: {1}", defaultMessage, testCase.Key); 
    Assert.AreEqual(testCase.Value, myObj.myMethod(testCase.Key), message); 
} 
+0

Я бы предпочел не жестко кодировать сообщение по умолчанию, тем более что он может меняться с помощью тестовых примеров. –

Смежные вопросы