在进行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);
}
}
答案 0 :(得分:0)
当您检查购物篮时,我或多或少试图确保价格为0.0,但我对某些东西感到完全不满意
assertEquals(0.0,checkout.price);
对我来说,这似乎很合理(除了测试试图从私人成员那里读取明显的错字之外)。
涉及舍入规则时,浮点数和双精度浮点数的断言可能会很棘手,但是断言在不希望舍入的用例中您能获得准确的答案并没有错。
在TDD中,您对Checkout 的实现有点奇怪。那里的代码远远超出了此测试的动力,并且Checkout
的API与您在此测试中编写的代码不太匹配。这就给您留下了一个看起来不太像是受测试驱动的实现。