使用JUnit在netbeans中进行单元测试

使用JUnit在netbeans中进行单元测试,netbeans,junit,Netbeans,Junit,我在NetBeans中使用JUnit运行了一个测试,得到了以下测试结果: 这是输出信息: 测试运行:0,失败:0,错误:2,运行时间:0336秒 -------------标准输出--------------------前卫tout après tout ------------------------------Testcase:calculette.calculMethodeTest:导致错误非法的局部变量 表24中的长度计算方法 calculette.calculette.main([L

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

这是输出信息:

测试运行:0,失败:0,错误:2,运行时间:0336秒

-------------标准输出--------------------前卫tout après tout ------------------------------Testcase:calculette.calculMethodeTest:导致错误非法的局部变量 表24中的长度计算方法 calculette.calculette.main([Ljava/lang/String;)V java.lang.ClassFormatError:非法的本地变量表长度为24英寸 方法calculette.calculette.main([Ljava/lang/String;)V位于 calculette.calculMethodeTest.setUpClass(calculMethodeTest.java:24)

Testcase:calculette.calculMethodeTest:导致错误为null 位于的java.lang.NullPointerException calculette.calculMethodeTest.tearDownClass(calculMethodeTest.java:30)

测试计算器测试失败的测试报告: 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;
    }
这是最初的方法:

**
     * 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;
    }

虽然
0.0
对于测试双重数学来说不是一个非常有意义的增量(小的、正的、非零的数字是您通常想要的,请看这里的一些),但我认为这不是错误的原因。这只会导致测试意外失败

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

-XX:-UseSplitVerifier

(如果您需要有关如何设置这些参数的帮助,可以参考此文档)

这意味着没有代码就什么都没有methods@AngryDuck测试方法还是原始方法?老实说,两者都很好,但更重要的是原始方法当然只是为了显示相关代码,而不是发布数百条lines@AngryDuck好的,请看我对我的帖子所做的修改