gpt4 book ai didi

java - 如何以正确的方式模拟 CrudRepository?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:09:33 27 4
gpt4 key购买 nike

我是 Spring 的新手。我的 GCGood 类使用 CrudRepository 保存到 MySQL-DB。而且效果很好。

现在我尝试编写 JUnit 测试。当然,我不希望任何测试数据出现在我的数据库中。所以我写了我的测试:

@RunWith(SpringRunner.class)
@SpringBootTest
public class GCGoodTests {

@MockBean
private GCGoodRepository goodRepository;

@Test
public void getterSetterTest()
{
GCGood testDummy = new GCGod();
testDummy.setAttribute("Muhaha");
testDummy.setColor(Color.BLACK);
testDummy.setName("Maka");
testDummy = goodRepository.save(testDummy);
Iterable<GCGood> testDummy2 = goodRepository.findAll();
assertEquals(testDummy.getAttribute(), "Muhaha");
assertEquals(testDummy.getColor(), Color.BLACK);
assertEquals(testDummy.getName(), "Maka");
assertNotNull(testDummy.getId());
assert(testDummy.getId()>0);
assertNotNull(testDummy2);
}
}

不幸的是,“testDummy = goodRepository.save(testDummy);”和“Iterable testDummy2 = goodRepository.findAll();”返回 null,测试甚至没有完成。

如果我将@MockBean 更改为@Autowire,一切正常。但是我的数据库中有不必要的 data-shmodda。

那么,没有 data-shmodda 如何实现正确的测试?

最佳答案

看来您想进行集成测试。如果是这样,您应该使用 @DataJpaTest 注释,它会在测试可以使用内存数据库运行时为您创建环境。您可以在 documentation 中找到更多信息.

这也取决于你想测试什么。如果存储库 (GCGoodRepository) 是您的测试目标,您应该 @Autowired 它并使用一些内存数据库在我上面提到的隔离环境中测试它。如果您测试依赖于某个存储库(例如 GCGoodRepository)的某些服务,您应该像@karthi 提到的那样模拟这个存储库。

关于java - 如何以正确的方式模拟 CrudRepository?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47738937/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com