我正在尝试编写一个测试用例,它涵盖了在catch
块中编写的一段代码。事情是这样的:
我在类A
中有两个方法。
class A{
public SomeReturnType m1()
{
try{
m2();
}catch(SomeException ex)
{
//handler code for SomeException (This is what I want to test).
}
}
public SomeReturnType m2() throws SomeException
{
//Some logic
}
}
我想知道,当从方法m1()
的单元测试用例调用m2()
时,如何强制执行此异常?有没有使用Mockito或其他测试库的解决方案?
正如您所建议的,Mockito将是一个用于此类用途的经典工具:
// Initialization - should probably be in the @Before method:
A a = Mockito.spy(new A());
Mockito.doThrow(new SomeException("yay!")).when(a).m2();
// Actual test:
SomeResult actualResult = a.m1();
assertEquals(someExpectedResult, actualResult); // or some other assertion
上面的片段创建了一个spy
IED对象(将其视为扩展a
的匿名类),该对象具有定义的行为,即当调用m2()
时,将抛出一个SomeException
。然后代码继续调用真正的m1()
方法,该方法本身调用m2()
,并且必须处理异常。
问题内容: 是否可以 在调试时 强制抛出异常。 让我举一个例子:我正在调试一些代码,这些代码是我从互联网上下载页面的地方。当Internet连接断开或网卡断开时,应抛出IOException,但执行会被阻止(在第二行) 我需要一种在代码阻塞时 在调试 时强制引发异常的方法,以便可以跳转到catch块。 我正在使用netbeans BTW。 While Debugging =执行线程暂停时手动添加。
我正试图为一个方法编写一个测试用例,该方法基于特定的逻辑抛出异常。然而,测试用例失败了,因为预期的异常和获得的异常是不同的。 我如何解决这个问题?
如何使用JUnit测试在我现有的项目中运行JMH基准测试?官方留档建议制作一个单独的项目,使用Maven阴影插件,并在方法中启动JMH。这是必要的吗?为什么推荐它?
我有一个Spring应用程序 我插入的新代码-maven测试失败-但仅当我从intelliJ运行测试时才从maven测试成功。来自maven/jenkins失败 org . spring framework . beans . factory . beancreationexception:创建名为“predefinedModelHandlerService”的bean时出错:调用init方法失败
问题内容: 我真的是java的新手。 我正在构造函数上运行一些JUnit测试。构造函数是这样的:如果为其参数之一赋予null或空字符串,则应该抛出异常。 当我在JUnit中使用null或空字符串参数测试此构造函数时,即使我几乎100%确信将此类参数传递给它时,构造函数方法确实会引发异常,我也会看到一条红色的条。 如果该方法以预期的方式引发异常,则JUnit中是否应该没有绿色的条形?还是当异常抛出按
问题内容: 编辑:目前没有JUnit 4。 嗨,您好, 我对使用JUnit进行“智能”异常测试有疑问。目前,我这样做是这样的: 如您所见,对于每个应该引发异常的函数,我都需要一个try / catch块。似乎不是执行此操作的好方法-还是没有可能减少try / catch的使用? 问题答案: 我建议您需要分解为多个单独的测试。各个try / catch块似乎彼此非常独立。您可能还希望将通用初始化逻辑