TDD'de Arrange Act Assert (AAA) sözdizimi vardır:
[Test]
public void Test_ReturnItemForRefund_ReturnsStockOfBlackSweatersAsTwo_WhenOneInStockAndOneIsReturned()
{
//Arrange
ShopStock shopStock = new ShopStock();
Item blackSweater = new Item("ID: 25");
shopStock.AddStock(blackSweater);
int expectedResult = 2;
Item blackSweaterToReturn = new Item("ID: 25");
//Act
shopStock.ReturnItemForRefund(blackSweaterToReturn);
int actualResult = shopStock.GetStock("ID: 25");
//Assert
Assert.AreEqual(expectedResult, actualResult);
}
BDD'de yazma testleri benzer bir yapı kullanır ancak Verilen Zaman (GWT) sözdizimi ile:
[Given(@"a customer previously bought a black sweater from me")]
public void GivenACustomerPreviouslyBoughtABlackSweaterFromMe()
{ /* Code goes here */ }
[Given(@"I currently have three black sweaters left in stock")]
public void GivenICurrentlyHaveThreeBlackSweatersLeftInStock()
{ /* Code goes here */ }
[When(@"he returns the sweater for a refund")]
public void WhenHeReturnsTheSweaterForARefund()
{ /* Code goes here */ }
[Then(@"I should have four black sweaters in stock")]
public void ThenIShouldHaveFourBlackSweatersInStock()
{ /* Code goes here */ }
Genellikle aynı kabul edilmelerine rağmen, farklılıklar vardır. Birkaç anahtar:
GWT doğrudan BDD çerçevelerindeki bir özellik dosyasının özelliklerine eşlenebilir
GWT, basit İngilizce kullanımını teşvik ederek ve her bir parçanın ne yaptığına dair kısa bir açıklama yaparak geliştirici olmayanların anlaması daha kolaydır
SpecFlow ve Cucumber gibi çeşitli BDD çerçevelerinde anahtar kelimeler ne zaman ve sonra verilir
Benim sorum AAA ve GWT arasında başka isimler (isimlerin yanı sıra) var mı? Ve yukarıda belirtilenlerin dışında birinin diğerine tercih edilmesinin bir nedeni var mı?