我想知道它应该如何测试,因为如果我想测试其中一个,它会迫使我在每个测试中放两个断言(它可能会长大)。
internal class Foo
{
public int A { get; set; }
public int B { get; set; }
public void UpdateVars(int a, int b)
{
A = a;
B = b;
}
}
我应该这样测试吗?
private Foo sut;
[TestCase(0, 1)]
[TestCase(-1, 1)]
[TestCase(int.MaxValue, 1)]
public void ShouldUpdateStatsAndCheckA(int a, int b)
{
sut.UpdateVars(a, b);
sut.A.ShouldBe(a);
}
[TestCase(1, 0)]
[TestCase(1, -1)]
[TestCase(1, int.MaxValue)]
public void ShouldUpdateStatsAndCheckB(int a, int b)
{
sut.UpdateVars(a, b);
sut.B.ShouldBe(b);
}
对我来说似乎很可怕。
答案 0 :(得分:0)
这是测试它的好方法,因为你应该尽量避免在单个测试中有很多断言。但是,这不应被视为一项规则,而应作为一项建议。通常,每个测试都会声明一个预期的行为。
如果您发现自己必须创建大量测试,以免在单个测试中放置多个断言,那么很可能您的模型错误并且您的方法做得太多。 / p>
有this blog篇关于如何处理可能有用的多个断言的文章。