我有一个多模块的项目,其中不是每个模块实际上都是一个应用程序,但其中很多都是库。这些库正在做主要的工作,我想测试它们在哪里实现。库的当前依赖项:
implementation 'org.springframework.boot:spring-boot-starter'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
在主源代码中是一个具有@Configuration
和一个bean的类:
@Bean public String testString() { return "A Test String"; }
我有两个测试类:
@RunWith(SpringRunner.class)
@SpringBootTest
@ActiveProfiles({"default", "test"})
public class Test1 {
@Test
public void conextLoaded() {
}
}
@RunWith(SpringRunner.class)
@SpringBootTest
@ActiveProfiles({"default", "test"})
public class Test2 {
@Autowired
private String testString;
@Test
public void conextLoaded() {
}
}
第一次测试有效。第二个不是。该项目中没有@SpringBootApplication
,因此在与Tests相同的包中,我添加了一个测试配置:
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan("com.to.config")
public class LibTestConfiguration {
}
但它不起作用。对于@Service
类也是如此。它们不在上下文中。我怎样才能让它表现得像一个普通的Spring boot应用程序,而不是真正的Spring boot应用程序,并从我需要的配置文件中加载configs和context?默认配置文件和测试配置文件共享它们的大部分属性(目前),我希望它们像启动tomcat一样被加载。
2条答案
按热度按时间fwzugrvs1#
我切换到JUnit 5并使它有点工作...如果你想测试数据库的东西:
完整的应用程序上下文测试,如果你的类路径中有一个带有
@SpringBootApplication
的类(在你的测试上下文中可以是一个空的测试main)仅测试特定组件和配置:
dy1byipe2#
我已经解决了在根测试包路径中添加
SpringAppConfiguration
类的问题