4

在“AAA”模式中,应该在哪里写入行为数据的提取?
在 Act 或 Assert 部分?

考虑这个单元测试,提取两个人,它应该在示例中的 Act 中还是在 Assert 中?我们想为公司所有的 UT 制定一个标准。

[Test]
public void Test()
{
    // Arrange
    var p1 = new Person();
    var p2 = new Person();
    Session.Save(p1);
    Session.Save(p2);

    // Act
    var result = new PersonQuery().GetAll();
    var firstPerson = result[0];
    var secondPerson = result[1];

    // Assert
    Assert.AreEqual(p1.Id, firstPerson.Id);
    Assert.AreEqual(p2.Id, secondPerson.Id);        
}

(请忽略在我可以编写的这个简单测试中Assert.AreEqual(p1.Id, result[0].Id);
我知道这不是一个大问题,但我仍然想知道如何将事情做得最好。

4

2 回答 2

7

这应该发生在 Assert 阶段:

[Test]
public void Test()
{
    // Arrange
    var p1 = new Person();
    var p2 = new Person();
    Session.Save(p1);
    Session.Save(p2);

    // Act
    var result = new PersonQuery().GetAll();

    // Assert
    var firstPerson = result[0];
    var secondPerson = result[1];
    Assert.AreEqual(p1.Id, firstPerson.Id);
    Assert.AreEqual(p2.Id, secondPerson.Id);        
}

Act阶段仅涉及调用被测方法。

于 2012-01-03T16:38:16.523 回答
1

这取决于经验法则 - Act 阶段表示在测试下执行业务逻辑。在您的情况下,这取决于提取是否影响任何业务逻辑,如果result[i]索引器是直接的集合项访问器 - 这不是Act因为您已经将数据提取到result变量中,否则 - 它会是Act.

于 2012-01-03T16:41:08.230 回答