自定义消息和默认消息
本文关键字:消息 默认 自定义消息 | 更新日期: 2023-09-27 18:02:15
是否有一种方法可以为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
。
重载将自动为您完成此操作。作为测试,我使用了这个测试方法来查看输出结果:
[TestMethod]
public void Test()
{
Assert.AreEqual(true, false, "Failed on the following test case: AB");
}
输出的Error Message为:Assert.AreEqual failed. Expected:<True>. Actual:<False>. Failed on the following test case: AB
message参数已经被附加/合并到默认消息中。
对于您的情况,如果您只想获得测试键,测试可能看起来像:
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
你就不能把消息连起来吗?
foreach (var testCase in testCases)
{
string message = string.Format("{0}: {1}", defaultMessage, testCase.Key);
Assert.AreEqual(testCase.Value, myObj.myMethod(testCase.Key), message );
}