TEST 개발할 때, AAA와 GWT의 차이를 알아보자


TEST 개발할 때, AAA와 GWT의 차이를 알아보자

1. AAA (Assignment, Act, Assert)

TDD(Test Driven Development : 테스트 주도개발) 에서 사용되는 용어

1-1. Assignment (준비)

테스트 코드를 실행하기 전에 시스템이 적절한 상태에 있도록함. (ex. 객체생성, 사전 준비에 필요한 api 호출 등)

1-2. Act (실행)

테스트 코드를 실행. 보통 단일 메서드를 호출함

1-3. Assert (단언)

실행한 코드가 기대한 대로 동작하는지 확인. 실행한 코드의 반환값 검사, 새로운 객체의 상태 검사.

2. GWT (Given, When, Then)

BDD(Behaviour Driven Development: 행동기반개발) 에서 사용되는 용어. BDD는 TDD랑 비슷한데, 비즈니스 요구사항에 좀더 집중하여 테스트케이스를 개발한다는것.

2-1. Given (준비)

테스트를 위해 준비하는 과정(변수, 입력값 정의, Mock객체 정의)

2-2. When (실행)

테스트 코드를 실행. (메서드 호출)

2-3. Then (검증)

테스트 검증. (리턴값 검증)

3. 예시

	@Test
	public void acount_조회_성공() throws Exception {
		// Given
		String expectedResult = "{\"accountId\":1,\"residence\":\"경북\",\"age\":59}";
		AccountDTO account = new AccountDTO(1, "경북", 59);

		// When
		when(accountService.getAccount(1)).thenReturn(account);
		ResultActions result = this.mvc.perform(get("/account/1"));

		// Then
		result.andExpect(status().isOk()).andExpect(content().json(expectedResult));
	}

4. 결론

개인적으로는 그냥 용어차이이고
Assignment = Given
Act = When
Assert = Then
위와 같이 동일한거같다. 개인적으로는 AAA는 좀 개발자 지향적이고 Given, When, Then이 테스트 상황을 더 명료하게 보여주는 워딩이라고 생각하는데 개발자들 위주 프로젝트면 AAA, 타직군과의 협업이 많이 필요하거나 비즈니스로직이 중요한 프로젝트면 GWT 을 쓰는게 좋은거같음. 그냥 개인취향차이..?




© 2020. by berrrrr

Powered by berrrrr