1

我正在尝试在 NetBeans 中使用 JUnit 测试 void 方法,我的方法是更改​​双精度变量的值,然后将新变量的值打印到 TextField 中,这是我的方法:

private void calcul(){

        if(operateur.equals("+")){
            chiffre1 = chiffre1 + Double.valueOf(ecran.getText()).doubleValue();
            ecran.setText(String.valueOf(chiffre1));
        }
        if(operateur.equals("-")){
            chiffre1 = chiffre1 - Double.valueOf(ecran.getText()).doubleValue();
            ecran.setText(String.valueOf(chiffre1));
        }          
        if(operateur.equals("*")){
            chiffre1 = chiffre1 * Double.valueOf(ecran.getText()).doubleValue();
            ecran.setText(String.valueOf(chiffre1));
        }     
        if(operateur.equals("/")){
            try{
                chiffre1 = chiffre1 / Double.valueOf(ecran.getText()).doubleValue();
                ecran.setText(String.valueOf(chiffre1));
            } catch(DivisionSurZeroException e) {
                ecran.setText("0");
            }
        }
    }

我在 Google 上搜索了如何测试 void 方法,但我能找到的只是改变集合大小的 void 方法。

所以请你能给我一些想法吗?我真的不知道从什么开始。

4

2 回答 2

4

您必须创建测试类的新实体,然后调用测试函数。稍后断言值已按您的意愿更改。

TestedClass tested = new TestedClass();
tested.calcul();

assertEquals("val", tested.getVal());

但是,在您的示例方法中是私有的。要对其进行测试,您可以尝试使用PowerMock

于 2013-04-19T12:02:32.350 回答
1
  1. 您可以将您的方法拆分为几个较小的方法 - 每个运算符一个 - 并独立测试它们。

  2. 测试void方法与返回值的测试方法没有太大区别:

    1. 设置先决条件
    2. 运行你的方法
    3. 检查后置条件

在你的情况下:

yourClass.setOperateur("+");
yourClass.setChiffre1(5);
yourClass.setEcran("7");

yourClass.calcul();

assertEquals("12", yourClass.getEcran());
于 2013-04-19T12:06:26.057 回答