요약

  • 둘 다 준비, 실행, 검증이지만 AAA은 기술적 관점으로 유닛 테스트에서 사용되며 GWT는 사용자 관점으로 통합 테스트에서 사용한다.

내용

Arrange-Act-Assert, AAA

  • Arrange(준비)
    • 테스트에 필요한 객체나 데이터를 설정한다.
  • Act(실행)
    • 테스트 대상 메서드나 기능을 호출하여 동작을 수행한다.
  • Assert(검증)
    • 실행 결과가 예상과 일치하는 확인한다.
test('블록 높이에 해당하는 블록을 반환해야 한다.', async () => {  
	// Arrange
	const blockchainService = new BlockChainMulti(  
    BlockchainType.XPLA,  
    xplaTestReadConfig,  
    xplaTestWriteConfig,  
    xplaTestBatchConfig,  
	);  
	const xplaApiService = blockchainService.api as XplaApi;
	const height = 12540067;
	
	// Act
    const blockInfo = await xplaApiService.getBlockInfo(height);  
    const raw = blockInfo.raw as BlockInfo;  
	
	// Assert
    expect(raw.block.header.height).toEqual('12540067');  
});

Given-When-Then, GWT

  • Given(준비): 테스트의 초기 상태나 조건을 설정한다.
  • When(실행): 테스트 대상 동작을 수행한다.
  • Then(검증): 기대하는 결과를 확인한다.
test('블록 높이에 해당하는 블록을 반환해야 한다.', async () => {  
	// Given
	const blockchainService = new BlockChainMulti(  
    BlockchainType.XPLA,  
    xplaTestReadConfig,  
    xplaTestWriteConfig,  
    xplaTestBatchConfig,  
	);  
	const xplaApiService = blockchainService.api as XplaApi;
	const height = 12540067;
	
	// Act
    const blockInfo = await xplaApiService.getBlockInfo(height);  
    const raw = blockInfo.raw as BlockInfo;  
	
	// Assert
    expect(raw.block.header.height).toEqual('12540067');  
});

차이점

  • 표현 방식과 적용 맥락의 차이가 있다.
    • AAA 패턴은 기술적인 용어를 사용한다. (Unit Test)
    • GWT 패턴은 자연어에 가까운 표현을 사용하여 시나리오를 기술한다. (BDD)

참고