java - junit 测试中 JPA 存储库为空

标签 java spring-boot spring-data-jpa

我正在尝试为我的存储库/服务类编写一个非常基本的测试,但由于我似乎无法弄清楚的原因,我的 Autowiring 存储库始终为空。

这是 Repo 类

public interface RuleRepository extends JpaRepository<Rule, UUID> {   
    public Optional<Rule> findByName(String name);
}

还有测试

@DataJpaTest
@ContextConfiguration(classes = MyApplication.class)
public class RulesTest {
    @Autowired
    private RuleRepository ruleRepository;  

    @Test
    public void testSaveOneRule() {
        if (ruleRepository == null) {
            System.err.println("HERE");
            assertTrue(true);
        } else {
              assertTrue(false);
          }
    }
}

有人有什么想法吗?测试总是通过...

编辑:我不确定这是否是一个值得新帖子的错误,但是使用注释 @RunWith(SpringRunner.class) 运行会产生错误 RulesTest。测试保存一条规则? IllegalState 无法加载 ApplicationContext...

MyApplication.class的内容

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class MyApplication {

    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }
}

最佳答案

为了测试存储库,您应该有注释:

@DataJpaTest 
@RunWith(SpringRunner.class) 
@SpringBootTest(classes=MyApplication.class)

关于java - junit 测试中 JPA 存储库为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53730477/

相关文章:

java - 在一段时间后调用 API 时第一次获取连接重置异常

java - Spring Data Jpa 入门

java - 在不改变宽高比的情况下将背景图像填充到屏幕

java - 如果在java中使用MAP,如何发送JSON @RequestBody?

java - spring-boot Amazon Elastic Beanstalk 忽略 'SPRING_APPLICATION_JSON'

spring-data - Spring Data JPA 规范中的左连接

Java Spring JPA 存储库

java - Bash 编译 Java 类和 JAR

java.lang.Exception : WEB0113

java - 使用自定义 ListView 布局中的按钮增加 Int 的值