

=> @BeforeAll๊ณผ @AfterAll์ ์ ์ฒด์ ์ํฅ์ ์ฃผ๋ฏ๋ก
Java์์๋ static์ค์ Kotlin์์๋ conpanion object๋ก ์ ์ธ๋ ๊ณณ์ ์ฌ์ฉ (@JvmStatic ํ์)
class JunitTest {
companion object {
@JvmStatic
@BeforeAll
fun beforeAll(): Unit {
}
}
@BeforeEach
fun beforeEach() {}
@Test
fun test1(){
}
@Test
fun test2(){
}
}

@Test๊ฐ ์ ํ ๋ฉ์๋ (given / when / then) ์ค then์ ์ฌ์ฉํ๋ฉฐ, ์๋ชป๋ ๊ฐ์ด ๋ค์ด์์ ๋, ์์ ๊ฐ๊ณผ ์ค์ ๊ฐ์ ๋น๊ต ๊ฐ๋ฅ
//then
assertThat(calculator.number).isEqualTo(7)

val message = assertThrows<IllegalArgumentException> {
function1() }.message
assertThat(message).isEqualTo("์๋ชป๋ ๊ฐ์ด ๋ค์ด์์ต๋๋ค")
//context Object ํ์ฉ => ๊ธฐ์ต์๋๋ฉด Kotlin ๊ธฐ๋ณธ ๋ฌธ๋ฒ
assertThrows<IllegalArgumentException> { function1() }.apply {
assertThat(message).isEqualTo("์๋ชป๋ ๊ฐ์ด ๋ค์ด์์ต๋๋ค")
}
- .isEqualTo
- .isTrue/ isFalse
- .hasSize
- .extracting("name").containsExactlyInAnyOrder("LEE", "Park")
๋ฆฌ์คํธ ๊ฐ์ name์ด๋ผ๋ ํ๋ผ๋ฏธํฐ ๊ฐ์ด ๋ง๋์ง (์์ ์๊ด X)- .extracting("name").containsExactly("LEE", "Park")
๋ฆฌ์คํธ ๊ฐ์ name์ด๋ผ๋ ํ๋ผ๋ฏธํฐ ๊ฐ์ด ๋ง๋์ง (์์ ์๊ด O)
0) Java Code -> test Kotlin (Java์ฝ๋ ๋ฒ ์ด์ค๋ก kotlin ํ ์คํธ๋ฅผ ๊ตฌํํ ๊ฒฝ์ฐ)
@SpringBootTest
class UserServiceTest @Autowired constructor(
private val userService: UserService,
private val userRepository: UserRepository,
)
{
@Test
@DisplayName("์ ์ ๋ฑ๋ก์ด ์ ์ ์๋ ํ๋ค.")
fun saveUserTest(){
//given
val request = UserCreateRequest("lee", null)
//when
userService.saveUser(request)
//then
val result = userRepository.findAll()
assertThat(result).hasSize(1)
assertThat(result[0].name).isEqualTo("lee")
assertThat(result[0].age).isNull()
}
}
@Entity
public class User {
@Id
@GeneratedValue(strategy = IDENTITY)
private Long id;
@Column(nullable = false)
private String name;
private Integer age;
@NotNull
public String getName() {
return name;
}
@Nullable
public Integer getAge() {
return age;
}
๋ฐ๋ผ์ ๊ฐ ํ ์คํธ ํ์ AfterEach๋ก db์ด๊ธฐํ ํ์
@AfterEach
fun clean() {
userRepository.deleteAll()
}
Intellij์์ gradle -> verification -> test