Rya*_*tes 2 c# unit-testing vs-unit-testing-framework
有没有办法指定一条消息Assert.AreEqual(object, object, string),将自定义消息与默认消息相结合?
我有以下代码:
foreach (var testCase in testCases)
{
Assert.AreEqual(testCase.Value, myObj.myMethod(testCase.Key), combinedMessage);
}
Run Code Online (Sandbox Code Playgroud)
除了下面来自 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");
}
Run Code Online (Sandbox Code Playgroud)
错误消息输出是: 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());
}
Run Code Online (Sandbox Code Playgroud)
如果每个测试用例都应该有自己的自定义消息,那么将自定义错误消息移动到 testCase 类是有意义的。作为创建每个对象的一部分,您可以指定这三个属性,然后:
testCase.Value = true;
testCase.Key = "AB";
testCase.FailureMessage = "Failed on the following test case: AB";
Run Code Online (Sandbox Code Playgroud)
这种类型的结构允许为每个 testCase 实例附加指定的消息。这样做将使单元测试看起来像这样:
foreach (var testCase in testCases)
{
Assert.AreEqual(testCase.Value, myObj.myMethod(testCase.Key),
testCase.FailureMessage));
}
Run Code Online (Sandbox Code Playgroud)
并且您示例中的输出显示为: Assert.AreEqual failed. Expected:<True>. Actual:<False>. Failed on the following test case: AB
| 归档时间: |
|
| 查看次数: |
10057 次 |
| 最近记录: |