이제 JUnit 5와 Spring Boot에서 테스트를 사용하기 시작했습니다. 컨트롤러, 서비스 및 리포지토리가있는 Rest API와 .NET @value
에서 속성을 가져 오는 데 사용 하는 일부 utils 클래스가 있습니다 application.properties
. 기본 구성을 사용하여 Spring의 "프로필"을 사용하지 않습니다.
내 응용 프로그램 메인 :
@EnableScheduling
@EnableDiscoveryClient
@ComponentScan
@SpringBootApplication
public class MyRestApiApplication {
public static void main(String[] args) {
SpringApplication.run(MyRestApiApplication.class, args);
}
}
사용하는 클래스 @value
:
@Component
public class JWTUtils implements Serializable {
@Value("${jwt.validity}")
public String JWT_TOKEN_VALIDITY;
@Value("${jwt.secret}")
private String secret;
// There's no constructors in the class.
}
메인 테스트 클래스 :
@SpringBootTest
class MyRestApiApplicationTests {
@Test
void contextLoads() {
}
}
속성이 필요한 내 테스트 클래스 :
class JWTUtilsTest {
JWTUtils jwtUtils;
@Test
void getUsernameFromToken() {
jwtUtils = new JWTUtils();
assertNotNull(jwtUtils.JWT_TOKEN_VALIDITY);
String username = jwtUtils.getUsernameFromToken("token-here");
assertNotNull(username);
assertEquals(username, "admin");
}
}
내 프로젝트의 아키텍처는 다음과 같습니다.
main/
├── java/
│ ├── com.foo.controller/
│ ├── com.foo.model/
│ ├── com.foo.repository/
│ └── com.foo.service/
└── resources/
├── application.properties
├── banner.txt
test/
├── java/
│ ├── com.foo.controller/
│ ├── com.foo.model/
│ ├── com.foo.repository/
│ └── com.foo.service/
└── resources/
├── application-test.properties
주 테스트 클래스에서 "@TestPropertySource"및 / 또는 "@ActiveProfiles ("test ")"를 시도했지만 작동하지 않았습니다. "@RunWith (SpringRunner.class)"로도 시도했습니다.
이 테스트를 실행할 때 내 "비밀"값은 "null"이며,이 값은 내 application.properties
"@Autowired"를 입력하려고 JWTUtils jwtUtils
했지만 null이 나왔습니다. @Autowired가 작동하지 않았습니다.