安排行动断言替代方案

Arm*_*ian 11 tdd bdd unit-testing arrange-act-assert

一般的问题是单元测试有AAA的替代模式吗?如果,是的,看一些例子,听听他们的利弊是非常有趣的.

并且作为AAA测试的最简单示例(在c#中,为简单起见使用var):

// Arranging
var annualSalary = 120000M;
var period = 3; // for a quarter profit
var calc = new SalaryCalculator();

// Acting
var result = calc.CalculateProfit(annualSalary, period); 

// Assertion
Assert.IsEqual(40000, result);
Run Code Online (Sandbox Code Playgroud)

Car*_*ter 9

我喜欢的东西不是AAA的替代品,而是一种变体.我认为它是Arrange-Assert(不是)-Act-Assert,但其他人称它为Guard Assertion.这个想法是要有一个断言,确保法案的预期结果在行为之前尚未出现.有它的一个很好的讨论在这里.

  • 我喜欢称之为Assume,因此模式变为Arrange-Assume-Act-Assert.(AAAA) (7认同)

Aki*_*kim 6

行为驱动的开发还有另一种表示法:给定 - - 然后.c#的示例是SpecFlow,而Jasmin是JavaScript的示例.这两种资源都充满了使用这种表示法的例子.在GWT的做法通常是在行为驱动开发和面向方面的编程中使用.

  • 我刚刚通过互联网查看了一些内容,看起来就像Given-When-Then是同一个Arrange-Act-Assert(例如[this](http://hadihariri.com/2012/04/11/what -bdd-已经成才-ME /)).它们在语义和逻辑上看起来非常相似.但实现的不同暴露了完全明确的定语测试方式.好:) (3认同)