在单元测试AAA模式中提取数据

本文关键字:提取 数据 模式 单元测试 AAA | 更新日期: 2023-09-27 18:19:15

在"AAA"模式中,应该写act数据的提取?
在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);)
我知道这不是一个大问题,但我还是想知道如何把事情做得最好。

在单元测试AAA模式中提取数据

这应该发生在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阶段只涉及调用被测试的方法。

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