echarts Linxu磁盘 unicode interface Zeptojs 百度seo关键词优化 vue路由 php零基础入门视频 android小程序源代码 java三维数组 python程序界面 json转object python转java python入门 数据库教程 mysql更新 python环境配置 python程序实例 java对象和类 java初级 java基础代码 java程序 javasocket java配置文件 js四舍五入 rendercontrol 乱码查看器 销售单软件 js添加元素 kmservice 心理学与生活pdf firework下载 生存猎人属性 adobe卸载工具 算法笔记 华为手机刷公交卡 还原软件哪个好 babelrc 加速软件 调试js
当前位置: 首页 > 学习教程  > 编程学习

为什么junit测试类需要一个无参构造函数

2021/1/9 2:17:52 文章标签: 无参构造函数

在用junit测试的时候遇到一个问题,代码如下: public class TimingOfVariateInitialization {int var1;public TimingOfVariateInitialization(int var1) {System.out.print("执行构造器");this.var1 var1;}{System.out.print("执行非静态…

在用junit测试的时候遇到一个问题,代码如下:

public class TimingOfVariateInitialization {
    int var1;


    public TimingOfVariateInitialization(int var1) {
        System.out.print("执行构造器");
        this.var1 = var1;
    }

    {
        System.out.print("执行非静态初始化块");
        var2 = "a";
    }

    //定义时指定初始化值
    String var2 = "b";

    public String toString() {
        return "var1=" + var1 + " var2=" + var2;
    }

    @Test
    public void test() {
        TimingOfVariateInitialization t1 = new TimingOfVariateInitialization(1);
        System.out.print(t1);
    }
}

运行之后,报错

java.lang.Exception: Test class should have exactly one public zero-argument constructor

at org.junit.runners.BlockJUnit4ClassRunner.validateZeroArgConstructor(BlockJUnit4ClassRunner.java:171)
at org.junit.runners.BlockJUnit4ClassRunner.validateConstructor(BlockJUnit4ClassRunner.java:148)
at org.junit.runners.BlockJUnit4ClassRunner.collectInitializationErrors(BlockJUnit4ClassRunner.java:127)
at org.junit.runners.ParentRunner.validate(ParentRunner.java:416)
at org.junit.runners.ParentRunner.<init>(ParentRunner.java:84)
at org.junit.runners.BlockJUnit4ClassRunner.<init>(BlockJUnit4ClassRunner.java:65)
at org.junit.internal.builders.JUnit4Builder.runnerForClass(JUnit4Builder.java:10)
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:26)
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:33)
at org.junit.internal.requests.FilterRequest.getRunner(FilterRequest.java:36)
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:49)
at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)
at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)

 

经分析,代码测试方法直接放在了要测试的类中,而且要测试的类有一个有参构造函数。

如果去掉有参构造函数,或者把测试方法放到另一个类中可以解决问题。

但是不知道为什么junit测试类一定需要一个无参构造函数

转载于:https://www.cnblogs.com/fpzh/p/10892350.html


本文链接: http://www.dtmao.cc/news_show_1100435.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?