我的应用程序中有一个依赖项/库。库中类的源代码如下。
JwtService.java接口:
package com.jwt.accesstoken;
import java.util.concurrent.CompletableFuture;
public interface JwtService {
CompletableFuture<String> jwtToken(String var1);
}
JwtServiceImpl.java:
package com.jwt.accesstoken;
import java.util.concurrent.CompletableFuture;
import org.springframework.stereotype.Component;
@Component
class JwtServiceImpl implements JwtService {
public CompletableFuture<String> acquireToken(String serviceName) {
//implementation
}
....
集成测试(JwtServiceGeneratorTest.kt):
@SpringJUnitConfig(JwtService::class)
//@SpringBootTest - this solves compilation error but takes too much time to run test
@ActiveProfiles("it-test")
class JwtServiceGeneratorTest {
@Autowired
private lateinit var jetService: JwtService //compilation error
....
我想使用
JwtService.java
在我的集成测试中自动装配 @SpringJUnitConfig
。并且 JwtServiceImpl.java
在依赖项中不是公开的。
如何在集成测试中自动装配 JwtService.java (应该在运行时调用
JwtServiceImpl.java
)而不使用 @SpringBootTest
如果我这样做
@SpringJUnitConfig(JwtService::class)
那么集成测试会抱怨没有可以自动装配的 JwtService.java 类型的 bean。
我无法做到 @SpringJUnitConfig(JwtService::class, JwtServiceImpl::class)
因为 JwtServiceImpl 是包私有的。
注意:如果我使用
@SpringBootTest
那么代码可以工作,但它会加载整个应用程序上下文,这对于此测试来说不是必需的,并且需要太多时间。