简短的回答
测试实际要测试的代码。
一些信息
您的第一个代码块中的代码绝不会被示例单元测试中的代码测试。
我假设因为它看起来像Java代码,而问题被标记为Java问题,所以第一个代码块中的代码实际上在某个方法中。
必须对该方法进行单元化,才能在该方法的异常捕获块中获得测试覆盖率。
public void IHateToTellPeopleMyMethodName(final String[] args)
{
try
{
fillParameters(args);
}
catch (ArgumentException e)
{
logger.error(e.getMessage(), e);
return;
}
}
为了在
IHateToTellPeopleMyMethodName
方法,
iHatTotellPeopleMyMethodName方法
单元测试中的方法。
iHatTotellPeopleMyMethodName方法
方法,因为它不调用
iHatTotellPeopleMyMethodName方法
方法。
@Test
public void testThatInNoWayTestsTheIHateToTellPeopleMyMethodNameMethod()
{
String[] args = { "...", "...", "...", "..." };
try
{
testInstance.fillParameters(args);
fail("expected exception not thrown");
}
catch (Throwable ex)
{
assertTrue(e instanceof ArgumentException);
}
}
与上面的单元测试代码不同,
这个单元测试包括
iHatTotellPeopleMyMethodName方法
方法。
@Test
public void testTheIHateToTellPeopleMyMethodNameMethod()
{
String[] args = { "...", "...", "...", "..." };
testInstance.IHateToTellPeopleMyMethodName(args);
verify(mockLogger).error(
eq(EXPECTED_MESSAGE_TEXT),
any(ArgumentException.class));
}
编辑注释
我的错,
any()
class
不是类名。