更新自己的变量的函数

时间:2016-01-14 18:33:09

标签: c# coding-style refactoring

我想知道它应该如何测试,因为如果我想测试其中一个,它会迫使我在每个测试中放两个断言(它可能会长大)。

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);
}

对我来说似乎很可怕。

1 个答案:

答案 0 :(得分:0)

这是测试它的好方法,因为你应该尽量避免在单个测试中有很多断言。但是,这不应被视为一项规则,而应作为一项建议。通常,每个测试都会声明一个预期的行为。

如果您发现自己必须创建大量测试,以免在单个测试中放置多个断言,那么很可能您的模型错误并且您的方法做得太多。 / p>

this blog篇关于如何处理可能有用的多个断言的文章。