gpt4 book ai didi

java - 如何正确使用 DoThrow()

转载 作者:行者123 更新时间:2023-11-29 04:07:38 25 4
gpt4 key购买 nike

目前刚开始单元测试,所以我有两个关于这个问题中的错误的问题,我希望它没问题。

  1. 我的类(class)有一个正面测试和三个负面测试,其中一个负面案例是使用 doThrow 模拟失败的存储库,但它也会导致正面测试失败,有什么办法可以解决这个问题?

  2. 理想情况下,负例和正例是否必须分为两类?

我已经在谷歌上搜索过这个但找不到任何引用,甚至找不到与我相同的问题,已经在 discord 上询问,虽然我确实找到了一些解决方法,通过为否定的 doThrow 案例创建新类,但我'寻求更多意见。

这里是负例的例子

@Test(expected = DAOException.class)
public void testFail() throws ObjectNotEncypted, ObjectNotFound {
List<Long> ids = new ArrayList<Long>();
ids.add(id);

Mockito.when(tempRepo.tempfunction(var)).thenReturn(Optional.of(expectedvalue));
Mockito.when(tempRepo.tempfunction(var)).thenReturn(expectedvalue);
Mockito.when(tempRepo.tempfunction(var)).thenReturn(null);
Mockito.when(tempRepo.tempfunction(var)).thenReturn(1);
Mockito.when(tempRepo.tempfunction(var)).thenReturn(1);
Mockito.doThrow(DAOException.class).when(tempRepo).tempfunctionthatshouldfail(var);

service.dofunction(ids);
}

-- 附加代码这是我构建配置和声明变量的方式

@Configuration
static class classConfig {
@Bean
public service accountService() {
return new serviceImpl();
}

@Bean
public TempRepo tempRepo () {
return Mockito.mock(TempRepo.class);
}
}

@Autowired
private Service service;

@Autowired
private TempRepo tempRepo ;

预期的结果是所有测试用例都应该运行,但我得到一个错误,并且跟踪只有一行,它是 com.project.common.exception.DAOException这是代码的正例部分。

提前致谢

最佳答案

我注意到你的 tempRepo 是一个全局变量,你试过调用 Mockito.reset(tempRepo); 吗?

你如何初始化 tempRepo mock?使用注解 @Mock 还是在构造函数中通过 Mockito.mock(Repo.class)

或者您可以在这里分享您的测试类(class)吗?

关于java - 如何正确使用 DoThrow(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57405331/

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