我想用一个模拟对象的不同行为执行一次Test方法几(3)次。所以我可以避免为每个使用模拟对象编写多个Test方法。
代码示例:
_mockObj.MockedMethod(Arg.Any<string>(), Arg.Any<string>()).Returns(new objA() { TestProp="bla1" };
_mockObj.MockedMethod(Arg.Any<string>(), Arg.Any<string>()).Returns(new objA() { TestProp="bla2" };
_mockObj.MockedMethod(Arg.Any<string>(), Arg.Any<string>()).Returns(new objA() { TestProp="bla3" };
我想要做的是使用一种Test方法来测试上述3种行为。这是可能的还是我必须编写3个单独的测试方法?
修改
我发现我必须使用TestCaseSourceAttribute
。但现在我正面临着另一个问题&#39;。当我有很多TestCase并且其中一个失败时,我无法追踪哪一个TestCase失败......
答案 0 :(得分:2)
方法!=测试。使用参数,一种方法可以生成许多测试用例。例如......
[TestCase("bla1")]
[TestCase("bla2")]
[TestCase("bla3")]
public void MyTest(string blaValue)
{
_mockObj.MockedMethod(Arg.Any<string>(), Arg.Any<string>())
.Returns(new objA() { TestProp=blaValue };
// Your test code
}
答案 1 :(得分:1)
一些研究让我想到了这一点:https://stackoverflow.com/a/10687118/1410501
[Test, TestCaseSource(nameof(MyTestCases))]
public void TestMethod(object obj)
{
}
private static readonly object[] MyTestCases =
{
new object { TestProp="bla1" },
new object { TestProp="bla2" },
new object { TestProp="bla3" },
};