TDD에는 AAA (Arrange Act Assert) 구문이 있습니다.
[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 쓰기 테스트에서 유사한 구조를 사용하지만 GWT (Gift When When) 구문을 사용합니다.
[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 */ }
그것들은 종종 같은 것으로 간주되지만 차이점이 있습니다. 몇 가지 핵심 사항은 다음과 같습니다.
GWT는 BDD 프레임 워크에서 기능 파일의 스펙에 직접 맵핑 될 수 있습니다.
GWT는 평범한 영어 사용을 장려하고 각 부분의 활동에 대한 간단한 설명을 통해 비 개발자가 이해하기 쉽습니다.
SpecFlow 및 Cucumber와 같은 다양한 BDD 프레임 워크의 키워드 When and Then
내 질문은 AAA와 GWT 사이에 다른 이름 (이름 외에)이 있습니까? 그리고 위에 지정된 것 외에 다른 것보다 선호 해야하는 이유가 있습니까?