没有参数的测试方法

Test method with no parameters

我对 Java 中的测试很陌生,想知道是否有办法像这样测试 class? 我特别想知道的是如何测试诸如“calculateCustoms”之类的方法,因为它不接受任何输入参数..

public class CustomsCalculator {
    
    private double litresWine, litresBeer;
    
    public void setLitresWine(double litresWine) {
        checkDoubleNotNegative(litresWine);
        this.litresWine = litresWine;
    }
    
    public void setLitresBeer(double litresBeer) {
        checkDoubleNotNegative(litresBeer);
        this.litresWineOverQuota = litresWineOverQuota;
    }

    
    public double getLitresWine() {
        return litresWine;
    }
    
    public double getLitresBeer() {
        return litresBeer;
    }

    
    
    public void checkDoubleNotNegative(double number) {
        if (number < 0) {
            throw new IllegalArgumentException("Negative value not allowed.");
        }
    }
    
    
    public double calculateCustoms() {
            double wineFee = 13.0*getLitresWineOverQuota();
            double beerFee = 11.0*getLitresBeerOverQuota();

            
            double totalFee =  wineFee + beerFee;
            return totalFee;
    }
}

要编写测试,您可以按照以下步骤操作:

  1. 准备上下文:实例化 CustomsCalculator,使用非负值调用 setLitresWine()setLitresBeer()
  2. 调用测试方法:calculateCustoms().
  3. 验证结果
public class CustomsCalculatorShould {

  @Test
  void calculate_the_customs_of_1_wine_and_1_beer() {
    // Prepare the context
    CustomsCalculator customsCalculator = new CustomsCalculator();
    customsCalculator.setLitresWine(1);
    customsCalculator.setLitresBeer(1);
    // Call the tested method
    double totalFee = customsCalculator.calculateCustoms()
    // Validate the result
    assertEquals(expectedResult, totalFee);
  }
}

expectedResult 必须替换为正确的值。您的代码没有显示 getLitresWineOverQuota()getLitresBeerOverQuota() 实现,所以我没有计算出正确的值。

你也应该测试 setLitresWine()setLitresBeer()

这是几种测试方法之一:)