반응형
* JUnit5 사용
1. 시나리오
* 테스트 중 파일을 읽거나 테스트 중인 정보를 파일에 써야 할 때가 있음
* 디렉토리의 파일을 읽는 방법이 필요함
2. File I/O 사용
* 가장 간단한 방법은 java.io.File 클래스의 인스턴스의 getAbsolutePath() 메소드를 호출하여 선택한 디렉터리를 읽는 방법
@Test
fun useFileIo() {
val path: String = "src/test/resources"
val file: File = File(path)
val absolutePath = file.absolutePath
println(absolutePath)
assertTrue(absolutePath.endsWith(path))
}
* 출력 결과는 아레와 같다.
/Users/user/Documents/workspace/demo/TIL/etc/junit/src/test/resources
3. Path 사용
* Java7에 도입된 Path 클래스를 사용할 수 있음
* Paths.get() 정적 팩토리메서드를 호출
* 경로를 파일로 변환하고 getAbsolutePath()를 호출하여 사용
@Test
fun usePath() {
val path = "src/test/resources"
// kotlin version
val resourceDirectory = Path(path)
// java version
// val resourceDirectory = Paths.get("src", "test", "resources")
val absolutePath = resourceDirectory.toFile().absolutePath
println(absolutePath)
assertTrue(absolutePath.endsWith(path))
}
* 위 예제와 동일한 결과가 출력
/Users/user/Documents/workspace/demo/TIL/etc/junit/src/test/resources
4. ClassLoader 사용
* 코드를 작성하기 전 resources 폴더에 example_resource.txt을 작성해두어야 합니다.
@Test
fun useClassLoader() {
val resourceName = "example_resource.txt"
val classLoader = javaClass.classLoader
val file = File(classLoader.getResource(resourceName).file)
val absolutePath = file.absolutePath
println(absolutePath)
assertTrue(absolutePath.endsWith(resourceName))
}
* 아래 결과가 출력됩니다.
/Users/user/Documents/workspace/demo/TIL/etc/junit/build/resources/test/example_resource.txt
* ClassLoader가 클래스 경로에서 리소스를 찾기 때문에 이전과 다른 결과를 보여줌
* 클래스의 리소스는 실제 build된 디렉터리에 저장이 되기 때문
반응형
'IT > TDD & Test' 카테고리의 다른 글
[JUnit] Dynamic Tests (0) | 2022.07.30 |
---|---|
[JUnit] 객체 타입 체크 (0) | 2022.07.26 |
[JUnit] JUnit에서 현재 실행 중인 테스트 이름 가지고 오기 (0) | 2022.07.25 |
RestClientTest를 알아보자~ (0) | 2021.03.27 |
Controller Test를 해보자~! (0) | 2021.03.21 |