我发现 AAA 模式中建议的对单元测试语句进行分区的概念很有用。
我倾向于添加标题注释,以便测试如下所示:
// Arrange
int a = 1;
int b = 2;
// Act
int c = a + b;
// Assert
Assert.AreEqual(3, c);
但我很好奇,总是包含这些标题注释是否正常?
...或者这是我应该避免的事情?
int a = 1;
int b = 2;
int c = a + b;
Assert.AreEqual(3, c);
我发现 AAA 模式中建议的对单元测试语句进行分区的概念很有用。
我倾向于添加标题注释,以便测试如下所示:
// Arrange
int a = 1;
int b = 2;
// Act
int c = a + b;
// Assert
Assert.AreEqual(3, c);
但我很好奇,总是包含这些标题注释是否正常?
...或者这是我应该避免的事情?
int a = 1;
int b = 2;
int c = a + b;
Assert.AreEqual(3, c);
一旦理解了基本前提,这似乎并没有增加太多价值。既然你提到了 C#,我建议你看看The Art of Unit Testing的例子。恕我直言,正确命名单元测试比在其中安排/执行/断言评论更重要。正如书中所指出的,当一个测试失败时,如果它命名得当,如果你知道最近做了什么改变,你通常可以直接推断出回归的原因。
我从这样做中获得了很多价值。它(对我来说)看起来更干净,立即清楚测试的哪些部分在做什么,并且它在某种程度上强制执行了模式。所以不,我认为你不需要避免它。
如果您的测试变得非常复杂,那是一个单独的问题。即使是六行测试也可以从这些评论中受益。如果您没有断言部分,因为您正在检查是否引发了异常,那么显然不要包含assert注释。
我总是很感激在我正在审查的代码中拥有那些,特别是对于集成测试。我觉得这样可以节省我的时间。