Java 使用JUnit测试异常。即使捕获到异常,测试也会失败
我是JUnit测试新手,我需要一个关于测试异常的提示 我有一个简单的方法,如果它得到一个空的输入字符串,就会抛出一个异常:Java 使用JUnit测试异常。即使捕获到异常,测试也会失败,java,unit-testing,exception-handling,junit,Java,Unit Testing,Exception Handling,Junit,我是JUnit测试新手,我需要一个关于测试异常的提示 我有一个简单的方法,如果它得到一个空的输入字符串,就会抛出一个异常: public SumarniVzorec( String sumarniVzorec) throws IOException { if (sumarniVzorec == "") { IOException emptyString = new IOException("The input string is e
public SumarniVzorec( String sumarniVzorec) throws IOException
{
if (sumarniVzorec == "")
{
IOException emptyString = new IOException("The input string is empty");
throw emptyString;
}
我想测试,如果参数是空字符串,是否实际引发异常。为此,我使用以下代码:
@Test(expected=IOException.class)
public void testEmptyString()
{
try
{
SumarniVzorec test = new SumarniVzorec( "");
}
catch (IOException e)
{ // Error
e.printStackTrace();
}
结果是抛出异常,但测试失败。
我错过了什么
谢谢你,托马斯删除
尝试捕获
块。JUnit将接收异常并适当地处理它(根据您的注释,认为测试成功)。如果您禁止异常,就无法知道JUnit是否抛出了异常
@Test(expected=IOException.class)
public void testEmptyString() throws IOException {
new SumarniVzorec( "");
}
而且,jerry博士正确地指出,不能将字符串与=
运算符进行比较。使用equals
方法(或string.length==0
)
(参见“预期例外”部分)可能是sumarniVzorec.equals(“”)而不是sumarniVzorec==“”如何:
@Test
public void testEmptyString()
{
try
{
SumarniVzorec test = new SumarniVzorec( "");
org.junit.Assert.fail();
}
catch (IOException e)
{ // Error
e.printStackTrace();
}
另一种方法是:
public void testEmptyString()
{
try
{
SumarniVzorec test = new SumarniVzorec( "");
assertTrue(false);
}
catch (IOException e)
{
assertTrue(true);
}
谢谢,但我已经尝试过了,它给出了一个错误:未处理的异常类型IOError您仍然需要将该方法声明为
抛出IOException
@Tomas您从哪里获得IOError?你能用stacktrace发布整个错误消息吗?@developmentAlinsity谢谢,我的错。但是它不会编译,所以它不能真正解决IOError。谢谢,我修复了它,但是它没有解决上面提到的问题。