【问题标题】:unit test in netbeans using JUnit使用 JUnit 在 netbeans 中进行单元测试
【发布时间】:2013-04-19 15:15:56
【问题描述】:

我在 NetBeans 中使用 JUnit 运行了一个测试,我得到了这个测试结果:

这是输出消息:

测试运行:0,失败:0,错误:2,经过时间:0,336 秒

------------- 标准输出 --------------- avant tout après tout ------------- ---- --------------- 测试用例:calculette.calculMethodeTest:导致 ERROR 非法局部变量 方法中的表长度 24 calculette.Calculette.main([Ljava/lang/String;)V java.lang.ClassFormatError:非法局部变量表长度 24 in 方法calculette.Calculette.main([Ljava/lang/String;)V at calculette.calculMethodeTest.setUpClass(calculMethodeTest.java:24)

测试用例:calculette.calculMethodeTest:导致 ERROR null java.lang.NullPointerException 在 calculette.calculMethodeTest.tearDownClass(calculMethodeTest.java:30)

测试 calculette.calculMethodeTest FAILED 测试报告: C:\Users\Aimad\Documents\NetBeansProjects\Calculette\nbproject\build-impl.xml:933: 一些测试失败;请参阅上面的详细信息。构建失败(总时间:12 秒)

这些错误是什么意思?

这是测试方法:

**
     * Test of main method, of class Calculette.
     */
    @Test
    public void testMain() {
        System.out.println("main");
        String[] args = null;
        Calculette.main(args);
    }

    /**
     * Test of multiplication method, of class Calculette.
     */
    @Test
    public void testMultiplication() {
        System.out.println("multiplication");
        double a = 2.0;
        double b = -5.0;
        Calculette instance = new Calculette();
        double expResult = -10.0;
        double result = instance.multiplication(a, b);
        assertEquals(expResult, result, 0.0);
    }

    /**
     * Test of division method, of class Calculette.
     */
    @Test (expected = DivisionSurZeroException.class)
    public void testDivision()  {
        System.out.println("division");
        double a = 0.0;
        double b = 0.0;
        Calculette instance = new Calculette();
        double expResult = a/b;
        double result = instance.division(a, b);
        assertEquals(expResult, result, 0.0);

        a = 10;
        b = 10;
        expResult = a/b;
        assertEquals(expResult, result, 0.0);

        a = 10;
        b = 0;
        expResult = a/b;
        assertEquals(expResult, result, 0.0);

        a = 10;
        b = -10;
        expResult = a/b;
        assertEquals(expResult, result, 0.0);

        a = 0;
        b = 10;
        expResult = a/b;
        assertEquals(expResult, result, 0.0);

        a = 0;
        b = -10;
        expResult = a/b;
        assertEquals(expResult, result, 0.0);

        a = -10;
        b = 10;
        expResult = a/b;
        assertEquals(expResult, result, 0.0);

        a = -10;
        b = 0;
        expResult = a/b;
        assertEquals(expResult, result, 0.0);

        a = -10;
        b = -10;
        expResult = a/b;
        assertEquals(expResult, result, 0.0);
    }

    /**
     * Test of addition method, of class Calculette.
     */
    @Test
    public void testAddition() {
        System.out.println("addition");
        double a = -10.1;
        double b = -70.0;
        Calculette instance = new Calculette();
        double expResult = a + b;
        double result = instance.addition(a, b);
        assertEquals(expResult, result, 0.0);
    }

    /**
     * Test of soustraction method, of class Calculette.
     */
    @Test
    public void testSoustraction() {
        System.out.println("soustraction");
        double a = -60.5;
        double b = 5.0;
        Calculette instance = new Calculette();
        double expResult = a - b;
        double result = instance.soustraction(a, b);
        assertEquals(expResult, result, 0.0);
    }

这是原来的方法:

public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {

            @Override
            public void run() {
                new Calculette().setVisible(true);
            }
        });
    }

 @Override
    public double multiplication(double a, double b) {
        return a*b;
    }

    @Override
    public double division(double a, double b)  {
        if(b == 0) throw new DivisionSurZeroException();
        else return a/b;
    }

    @Override
    public double addition(double a, double b) {
        return a + b;
    }

    @Override
    public double soustraction(double a, double b) {
        return a-b;
    }

【问题讨论】:

  • 这意味着没有方法的代码
  • @AngryDuck 测试方法还是原方法?
  • 老实说,但更多的是原始方法
  • 当然只显示相关代码,不要发布数百行
  • @AngryDuck Okey,请查看我对帖子所做的修改

标签: netbeans junit


【解决方案1】:

虽然0.0 不是一个非常有意义的增量来测试双重数学(小的、正的、非零数字是您通常想要的,请看这里的一些 discussion about what the delta is),这是一个很好的说法,但我不要认为这是错误的罪魁祸首。这只会导致测试意外失败。

此问题似乎与 Java 7 中的字节码验证器相关更改。我似乎可以通过传递参数来解决此问题

-XX:-UseSplitVerifier

(你可以参考这个NetBeans resource如果你需要关于如何设置这些参数的帮助)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-30
    • 2019-07-21
    相关资源
    最近更新 更多