在单元测试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);
)
我知道这不是一个大问题,但我还是想知道如何把事情做得最好。
这应该发生在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
。