我怎么能用Mockito测试ClassNotFoundException?

 qqjayzhe 发布于 2023-02-05 12:10

我在下面的课上运行单元测试:

public class FileClass {

    public void funcB() {
        try {
            throw new ClassNotFoundException();
        }
        catch( ClassNotFoundException e ) {

        }
    }
}

使用Mockito代码如下所示:

public class TestFileClass {

    @Test(expected=ClassNotFoundException.class)
    public void testFuncB() {
        FileClass fc = Mockito.spy(new FileClass());
        fc.funcB();
    }

}

但由于以下错误,测试失败:

java.lang.AssertionError: Expected exception: java.lang.ClassNotFoundException
    at org.junit.internal.runners.statements.ExpectException.evaluate(ExpectException.java:35)
    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:300)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)

我也试过PowerMockito但又失败了.有这个错误的任何线索?在我看来,我不能进行任何测试ClassNotFoundException

1 个回答
  • funcB没有抛出异常,因为你是在funcB的体内捕获它.

    2023-02-05 12:13 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有