Di TDD ada sintaks Arrange Act Assert (AAA):
[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);
}
Dalam tes menulis BDD menggunakan struktur yang sama tetapi dengan sintaks Given When Then (GWT):
[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 */ }
Meskipun mereka sering dianggap sama ada perbedaan. Beberapa yang penting adalah:
GWT dapat dipetakan langsung ke spesifikasi file fitur dalam kerangka BDD
GWT lebih mudah dipahami oleh non-pengembang dengan mendorong penggunaan bahasa Inggris yang sederhana, dan memiliki deskripsi singkat tentang apa yang dilakukan setiap bagian
Diberi Kapan dan Lalu adalah kata kunci dalam berbagai kerangka kerja BDD seperti SpecFlow, dan Mentimun
Pertanyaan saya, adakah perbedaan lain (selain nama) antara AAA dan GWT? Dan adakah alasan selain yang ditentukan di atas bahwa yang satu lebih disukai daripada yang lain?