JUnit测试返回的原始类型

时间:2018-07-24 04:13:47

标签: java list junit double tdd

在进行JUnit测试时,为此特定测试用例添加了检查,如果我们的购物篮或列表为空,我们应该返回0.0的价格。如果结帐的calculatePrice方法传递了一个空的Basket,则它将返回一个价格,为0.0的两倍 我只是不确定如何去做。我或多或少试图确保在您检查购物篮时价格为0.0,但我觉得完全不满意

购物篮

public class Basket {

private List<Object> bookList = new ArrayList<Object>();


public List<Object> getBooksInBasket(){

    return bookList;
}

}

结帐

enter code here
public class CheckOut {

private double price = 0.0;

public double getCheckOutPrice() {
    return price;
}

double calculatePrice(Basket basket){
    Basket basket1 = new Basket();
    if(((List<Object>) basket1).size()==0)
        return basket.price1=0.0;
    return price;

    //return null;

}

}

测试

 public class CheckOutTest {

@Test
public void test_CalculatePrice_ReturnsDoubleZeroPointZeroWhenPassedAnEmptyBasket(){
    //Arrange
    Basket basket = new Basket();
    CheckOut checkout = new CheckOut();

    //Act

    checkout.calculatePrice(basket);

    //Assert

    //assertEquals(0.0,checkout.price);
}




}

1 个答案:

答案 0 :(得分:0)

  

当您检查购物篮时,我或多或少试图确保价格为0.0,但我对某些东西感到完全不满意

assertEquals(0.0,checkout.price);

对我来说,这似乎很合理(除了测试试图从私人成员那里读取明显的错字之外)。

涉及舍入规则时,浮点数和双精度浮点数的断言可能会很棘手,但是断言在不希望舍入的用例中您能获得准确的答案并没有错。

在TDD中,您对Checkout 的实现有点奇怪。那里的代码远远超出了此测试的动力,并且Checkout的API与您在此测试中编写的代码不太匹配。这就给您留下了一个看起来不太像是受测试驱动的实现。