这个测试用例怎么写?
How to write this test case?
我需要编写此测试方法来检查方法 AMethod1 和 AMethod2 return 具有相同布尔参数的相同结果(AMethod1 已重构为 AMethod2)
调用这些方法时如何实现所有可能的参数组合?当然,我可以只复制粘贴 9 种不同的组合,但也许有更优雅的方法?
[TestClass]
public class UnitTest1
{
[TestMethod]
public void OriginalMethodAndOptimizedReturnSameResult()
{
// By supplying same set of parameters for both methods,
// the test should succeed if methods return same result
var result1 = Program.AMethod1(false, false, false);
var result2 = Program.AMethod2(false, false, false);
Assert.AreEqual(result1, result2);
}
}
还有另一个问题 - 如果测试运行时间超过 10 秒,如何使测试失败?
在 VS2017 中这似乎有效,不确定您使用的是哪个 VS 版本。仍然冗长,但比写 8 种组合更好:
[DataTestMethod]
[DataRow(false, false, false)]
[DataRow(false, false, true)]
[DataRow(false, true, false)]
[DataRow(false, true, true)]
[DataRow(true, false, false)]
[DataRow(true, false, true)]
[DataRow(true, true, false)]
[DataRow(true, true, true)]
public void OriginalMethodAndOptimizedReturnSameResult(bool b1, bool b2, bool b3)
{
// By supplying same set of parameters for both methods,
// the test should succeed if methods return same result
var result1 = Program.AMethod1(b1, b2, b3);
var result2 = Program.AMethod2(b1, b2, b3);
Assert.AreEqual(result1, result2);
}
使用迭代计数器的位模式:
for(var i = 0; i < 8; i++) {
var a = (i & 1) > 0;
var b = (i & 2) > 0;
var c = (i & 4) > 0;
var result1 = Program.AMethod1(a, b, c);
var result2 = Program.AMethod2(a, b, c);
Assert.AreEqual(result1, result2);
}
对于超时mstest支持timeout argument @ MSDN
我需要编写此测试方法来检查方法 AMethod1 和 AMethod2 return 具有相同布尔参数的相同结果(AMethod1 已重构为 AMethod2)
调用这些方法时如何实现所有可能的参数组合?当然,我可以只复制粘贴 9 种不同的组合,但也许有更优雅的方法?
[TestClass]
public class UnitTest1
{
[TestMethod]
public void OriginalMethodAndOptimizedReturnSameResult()
{
// By supplying same set of parameters for both methods,
// the test should succeed if methods return same result
var result1 = Program.AMethod1(false, false, false);
var result2 = Program.AMethod2(false, false, false);
Assert.AreEqual(result1, result2);
}
}
还有另一个问题 - 如果测试运行时间超过 10 秒,如何使测试失败?
在 VS2017 中这似乎有效,不确定您使用的是哪个 VS 版本。仍然冗长,但比写 8 种组合更好:
[DataTestMethod]
[DataRow(false, false, false)]
[DataRow(false, false, true)]
[DataRow(false, true, false)]
[DataRow(false, true, true)]
[DataRow(true, false, false)]
[DataRow(true, false, true)]
[DataRow(true, true, false)]
[DataRow(true, true, true)]
public void OriginalMethodAndOptimizedReturnSameResult(bool b1, bool b2, bool b3)
{
// By supplying same set of parameters for both methods,
// the test should succeed if methods return same result
var result1 = Program.AMethod1(b1, b2, b3);
var result2 = Program.AMethod2(b1, b2, b3);
Assert.AreEqual(result1, result2);
}
使用迭代计数器的位模式:
for(var i = 0; i < 8; i++) {
var a = (i & 1) > 0;
var b = (i & 2) > 0;
var c = (i & 4) > 0;
var result1 = Program.AMethod1(a, b, c);
var result2 = Program.AMethod2(a, b, c);
Assert.AreEqual(result1, result2);
}
对于超时mstest支持timeout argument @ MSDN