- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
目前刚开始单元测试,所以我有两个关于这个问题中的错误的问题,我希望它没问题。
我的类(class)有一个正面测试和三个负面测试,其中一个负面案例是使用 doThrow 模拟失败的存储库,但它也会导致正面测试失败,有什么办法可以解决这个问题?
理想情况下,负例和正例是否必须分为两类?
我已经在谷歌上搜索过这个但找不到任何引用,甚至找不到与我相同的问题,已经在 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/
目前刚开始单元测试,所以我有两个关于这个问题中的错误的问题,我希望它没问题。 我的类(class)有一个正面测试和三个负面测试,其中一个负面案例是使用 doThrow 模拟失败的存储库,但它也会导致正
我正在测试注入(inject)的 StatefulBeanToCsv 依赖项抛出异常时的错误情况。但是,Mockito 的 doThrow() 方法只是让我的测试失败,而不是允许使用 assertTh
我正在尝试对特定场景进行单元测试,该场景要求我使用特定的堆栈跟踪元素引发异常。 基本上我是这样的: final RuntimeException exception = new Runtime
我正在尝试测试抛出的异常,但代码继续返回 true,而不是捕获异常并返回 false。 测试类 @RunWith(PowerMockRunner.class) @PrepareForTest({Cla
doThrow() 和 thenThrow() 有什么区别? 比方说,我们想要模拟身份验证服务来验证用户的登录凭据。如果我们要模拟异常,下面两行有什么区别? doThrow(new BadCreden
我有一个 JUnit 测试,我正在测试一个带有空参数的方法。如果参数/arguments 为 null,那么我将抛出 NullPointerException。该方法本身只会抛出 IOExceptio
我有一个 JavaMailDao 类,我想使用 JUnit 和 mockito 对其进行测试。我想测试Catch部分 try { this.mailSender.send(ms
我正在使用 Mockito 测试 anroid 应用程序。我想测试一个异常情况,但是方法 Mockito.doThrow 挂起并且测试永远不会执行(它既不失败也不成功)。 这是代码。 PackageD
我试图通过抛出异常来模拟 JUnit 测试中的失败情况。但是,我似乎未能正确地 stub 某些方法。 我的代码如下: private MyClass mockObject; @Before publi
我正在尝试模拟一个方法以查看我是否正确处理了异常。这是据我所知。 界面: interface SampleManager { void deleteVariome(String specime
我尝试切换到when()并得到编译器错误 我已经在同一个项目的另一个测试中成功使用了 doThrow(...),所以我不知道这里发生了什么 单元测试代码: doThrow(new Exception(
我正在使用如下所示的模拟对象: @Mock private RecipeService recipeService 我在测试类中还有以下方法: @Test public void te
我有一个方法process,它返回void,也可能抛出异常。我想验证在调用 process 时其他方法 run 的行为方式以及在发生异常时如何处理异常。 我尝试使用doThrow(),但它告诉我“检查
我正在使用 PowerMock (Mockito) 来模拟对同一类中另一个方法的子调用。更具体地说,我有这样的东西: public class myClass{ public void MyM
我正在学习 mockito,我从 link 中了解了上述函数的基本用法。 . 但是我想知道它是否可以用于任何其他情况? 最佳答案 doThrow :主要用于在模拟对象中调用方法时抛出异常。 publi
我不确定我是发现了错误还是只是做错了。我试图在调用方法时模拟抛出异常(通常相对容易),除了方法是 void 返回类型,以及要传入的对象(为什么抛出错误) 为 null。这样可以通过isNull()类型
我是一名优秀的程序员,十分优秀!