我正在尝试为我的存储库/服务类编写一个非常基本的测试,但是由于我似乎无法弄清楚的原因,我的自动装配式存储库始终为null。
这是回购类
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.testSaveOneRule ? IllegalState Failed to load 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);
}
}
答案 0 :(得分:1)
我注意到您缺少此注释@RunWith(SpringRunner.class)
我正在关注此页面,因此可以https://grokonez.com/testing/datajpatest-with-spring-boot
答案 1 :(得分:1)
要测试存储库,您应该具有注释:
@DataJpaTest
@RunWith(SpringRunner.class)
@SpringBootTest(classes=MyApplication.class)
答案 2 :(得分:0)
如果您使用 JPA 添加类 Test @DataJpaTest。 例如:
@DataJpaTest
public class CategoriaServiceTest {
@Autowired
private CategoriaRepository repository;
@Test
public void test() {
Categoria categoria = new Categoria(null, "Teste");
Categoria categoriaSaved = repository.save(categoria);
assertEquals(categoria.getNome(), "Jefferson");
}
}