繁体   English   中英

如何在JUNIT4.7中声明用户定义的异常

[英]How to assert Userdefined Exceptions in JUNIT4.7

我正在使用Maven使用JUNIT 4.7

    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.7</version>
    </dependency>

我有上传文件的方法,并且使用了自己的用户定义的异常,如下所示

public void uploadFile(String fileName) {
    File file  = null;

    try {
        file = new File(DIR + "/" + fileName);

        // If the file size exceeds 10 MB raise an exception
        if ((file.length() / MB) > 10)
            throw new FileSizeExceedLimitException("File size should not exceed 10 MB");

        else {
            System.out.println("File Uploaded Successfully");
        }
    } catch (FileSizeExceedLimitException e) {
        e.printStackTrace();
    }
}

我的用户定义的异常如下所示

public class FileSizeExceedLimitException extends Exception{
    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    public FileSizeExceedLimitException(String s){
        super(s);
    }
}

我的测试用例如下所示

方法1:

DocxOperations operations = null;

@Rule
public final ExpectedException exception = ExpectedException.none();

@Before
public void before() {
    operations = new DocxOperations();
}

@Test
public void testUploadFileSize() {
    exception.expect(FileSizeExceedLimitException.class);
    operations.uploadFile("Bigdata.docx");
}

方法2:

@Test(expected = FileFormatException.class)
public void testUploadFile() {
    operations.uploadFile("01 Big Data Hadoop Intro V 2.0.docx");
}

方法3:

@Test(expected = FileFormatException.class)
public void testUploadFile() throws FileFormatException{
    operations.uploadFile("01 Big Data Hadoop Intro V 2.0.docx");
}

在上述所有方法中,我无法通过测试用例,并且我已经看到了这些解决方案,但它们对我没有用

断言异常测试异常

在我的主要代码,即uploadFile方法我只有使用trycatch不会throws

问题是您没有在方法调用之外抛出异常:

这是简单的代码,只需抛出即可捕获,以更清晰地看到它

try {
   ...

        throw new FileSizeExceedLimitException("File size should not exceed 10 MB");
    ...

  } catch (FileSizeExceedLimitException e) {
    e.printStackTrace();
}

您正在捕获并吞下异常。 删除try-catch并使您的方法throws FileSizeExceedLimitException ,并且测试应该可以进行

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM