包含此页的版本:
不含此页的版本:
在本练习中,您将了解 AAA(排列、行动、断言)的核心单元测试原则,这将帮助您构建单元测试。
Arrange, Act, Assert 概念是单元测试的行业标准。它允许清楚地区分用于设置测试、执行测试和评估的代码。使用它可以使您的测试对您自己和您的同事来说都更具可读性。
在代码的第一部分,我们安排了测试所需的所有元素。在中间部分,我们作用于正在测试的对象。在最后一部分,我们断言行为部分的结果。代码的三个部分通常用空行分隔。
Arrange、Act、Assert 的示例可能如下所示:
[Test]
public void StringWriterTest()
{
// Arrange
var stringWriterUnderTest = new StringWriter();
stringWriterUnderTest.NewLine = "\\n";
var testStringA = "I am testing";
var testStringB = "with new line";
// Act
stringWriterUnderTest.WriteLine(testStringA);
stringWriterUnderTest.WriteLine(testStringB);
// Assert
Assert.AreEqual("I am testing\\nwith new line\\n", stringWriterUnderTest.ToString());
}
使用是很好的做法XUnderTest作为正在测试的类的变量名称。这有助于保持测试的焦点干净。
代码的 Act 部分应包含尽可能少的行,以反映实际测试的内容。在最佳情况下,断言应该只包含断言调用,但也可能需要包含一些逻辑行以允许断言。
导入示例 2_ActArrangeAssert从 Package Manager 窗口进入 Unity 编辑器(版本 2019.2 或更高版本)。
在这个项目中,我们有一个名为StringFormatter.它有两种感兴趣的方法:void Configure(string joinDelimiter)和string Join(object[] args).
本练习的目标是编写一个或多个测试,测试Join方法。例如,测试它可以与“;”(分号)分隔符。
Configure(";")将进入Arrange测试的一部分。该练习可以通过如下测试来解决:
[Test]
public void JoinsObjectsWithSemiColon()
{
// Arrange
var formatterUnderTest = new StringFormatter();
formatterUnderTest.Configure(";");
var objects = new object[] {"a", "bc", 5, "d"};
// Act
var result = formatterUnderTest.Join(objects);
// Assert
Assert.AreEqual("a;bc;5;d", result);
}
可以在示例中找到包含解决方案的完整项目2_ActArrangeAssert_Solution.