다음과 같은 구조의 다중 모듈 프로젝트가 있습니다.
처음에
@SpringBootConfiguration을 찾을 수 없습니다. 테스트에 @ContextConfiguration 또는 @SpringBootTest (classes = ...)를 사용해야합니다.
테스트 폴더에 @Configuration 파일을 만들어서 해결했습니다.
@Configuration
@ComponentScan("com.mohen")
public class TestConfig {
}
그리고 나는 그것을 @SpringBootTest(TestConfig.class)
.I 에서 사용했습니다 .Autowire 할 수 있었고 IDE는 오류 신호를 표시하지 않았습니다. 그러나 테스트를 실행할 때 서비스 모듈에서 종속성을 자동 연결하려는 다른 클래스에서 NoSuchBeanDefinitionException이 발생합니다.
이러한 문제를 해결하는 방법은 무엇입니까?
응용 프로그램의 기본 구성 파일은 다음과 같습니다.
@SpringBootApplication(scanBasePackages = "com.mohen")
@EnableScheduling
@EnableAsync
@Import(value = {SSIpFilter.class, MainConfig.class})
public class Application extends SpringBootServletInitializer {...}
MainConfig.class에는 componentScan 및 Import 주석이 포함되어 있습니다.
테스트에서 MainConfig.class를 가져 오려고하면 서버 모듈에 종속성을 추가하라는 제안이 있는데,이 작업은 원하지 않습니다.
또한 전체 애플리케이션은 단일 속성 파일 (yml)을 사용합니다. 테스트를 위해 속성 파일을 어디에 보관해야합니까?
편집하다
테스트, dataJpaTest 및 통합 테스트를 실행했지만 전체 애플리케이션 컨텍스트를로드합니다.
이제 문제는 정상적으로 통과하는 테스트가 프로젝트를 빌드 할 때 실패한다는 것입니다. ./gradlew clean build
나는 얻다
java.lang.NoClassDefFoundError
일부 수업에서
원인 : javassist.NotFoundException
다른.
javaassist 라이브러리를 추가하려고했지만 작동하지 않습니다.
어떤 생각?
내 질문에 대한 해결책을 찾았습니다. 프로젝트가 다중 모듈이기 때문에 클래스와 패키지가 다른 모듈에서 인식되지 않았습니다. 모듈의 build.gradle 파일을 몇 가지 변경했습니다.
testRuntime project(':shared')
위의 종속성을 추가하고
jar {
enabled = true
}
bootRepackage{
enabled = false
}
jar는 간단한 실행 불가능한 jar 파일을 생성하는 반면 bootRepackage는 기본적으로 그 특성 인 실행 가능한 jar의 생성을 비활성화합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다