我想用一个模拟对象的不同行为执行一个测试方法几(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" };
我想要做的是使用一个测试方法测试上述3点的行为。这是可能的还是我必须写3个单独的测试方法?
编辑
我发现,我必须使用TestCaseSourceAttribute
。但现在我正面临另一个“问题”。当我有很多测试案例,其中一个失败时,我无法追查哪一个测试案例失败...
你可以写一个方法,要么使用3种测试方法或由一个测试方法称为3倍宛若常规代码。 – juharr
你的意思是我可以在一个测试方法中编写3个单独的排列,行为,断言? – Ozkan
这是一种看待它的方法,但是我会将常见的Arrage,Act和Assert代码写入“helper”方法,然后调用它传入不同的mock中,这是我的建议。 Wheather你从一个Test方法中调用它,或者3取决于你。我仍然会做3个独立的测试方法,这样我就可以看到每个方法的断言/错误。 – juharr