我有一个小项目,它不包含运行Spring Boot应用程序的类。在那个类中,我只有一些配置和一些存储库。我想在小项目中测试这些存储库。
为此,我有以下内容:
@SpringBootTest
@DataJpaTest
public class TaskRepositoryTest extends AbstractTestNGSpringContextTests {
@Autowired
private TaskRepository taskRepository;
@Test
public void test() {
taskRepository.save(new Task("open"));
}
}
但是我收到以下错误
Caused by: java.lang.NoSuchMethodError: org.springframework.boot.jdbc.DataSourceBuilder.findType(Ljava/lang/ClassLoader;)Ljava/lang/Class;
知道我必须做什么吗?
答案 0 :(得分:3)
这适用于Spring Boot 2.0.3,H2和最新的RELEASE testng:
@EnableAutoConfiguration
@ContextConfiguration(classes = TaskRepository.class)
@DataJpaTest
public class TaskTest extends AbstractTestNGSpringContextTests {
@Autowired
private TaskRepository taskRepository;
@Test
public void test() {
taskRepository.save(new Task("open"));
}
}
LE:
在先前版本的答案中,我使用过@SpringBootTest @DataJpaTest
,但这似乎是错误的方法。
将显示以下消息:
[main]信息org.springframework.boot.test.context.SpringBootTestContextBootstrapper-使用SpringBootContextLoader找不到测试类[one.adf.springwithoutapp.TaskTest]的@ContextConfiguration和@ContextHierarchy
将@ContextConfiguration
与@DataJpaTest
一起使用会删除该警告,并且IntelliJ不会将模拟的taskRepository
标记为无法自动装配。找不到“ TaskRepository”类型的bean。