본문에 에러메시지 중 일부를 보면 Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Column "M1_0.USERNAME" not found; SQL statement: 와 같은 부분이 있는데요, 아마 DB에 컬럼이 없던것 같습니다. 잘못된 답변으로 혼동드려 죄송합니다 ㅎㅎ,, 아래 코즈위버님께서 작성하신 답변 참고 부탁드립니다 :) spring.jpa.hiberate.ddl-auto=create 옵션은, 테이블이나 필드가 없으면 새로 생성하라는 의미입니다. 그래서 없던 컬럼이 새로 생성되면서 테스트코드가 정상적으로 실행된거구요.
둘 다 순서가 중요합니다. Assertions.assertEquals(A, B) 에서 A : expected (기댓값) B : actual (실제 값) Assertions.assertThat(A).isEqualTo(B) 에서 A : actual (실제 값) B : expected (기댓값) 즉, 각 메소드별로 A와 B의 의미가 다르기 때문에 영한님께서 강의에 그렇게 내용을 포함하셨을거라 생각합니다. ======================================================= 예를 들어, 계산기 프로그램의 add(int, int) 메소드를 테스트한다고 했을 때 Assertions.assertEquals(8, Calc.add(3, 5)) 가 옳은 표현이며, 그 반대인 Assertions.assertEquals(Calc.add(3, 5), 8) 은 부적절한 표현입니다. 만약 add 메소드가 잘못 개발되어 Calc.add(3, 5) -> 5 가 반환된다고 가정해봅시다. 테스트에 실패했을 때, 발생하는 에러메시지를 본다면 전자 : 기댓값이 8이지만, 실제로 5가 나왔어. 후자 : 기댓값이 5이지만, 실제로 8이 나왔어. 와 같은 맥락으로 출력됩니다. Assertions.assertThat 은 isEqualTo 만 놓고보면 A, B의 순서가 중요하지 않아보일 수 있지만, 범위를 테스트하는 코드 예시를 하나 작성해드리겠습니다. 아래 코드 보시면 바로 이해가 가실겁니다. assertThat(result) .isGreaterThan(0) .isLessThan(10);