使用相同的变量来打印出收据,并因此将相同的值传递给每个项目。

时间:2018-12-13 01:01:08

标签: java

如何更改代码以免发生这种情况?

NumberFormat formatter = 
NumberFormat.getCurrencyInstance();
    Candy item1 = new Candy(name, amount, price);
    Cookie      item2 = new Cookie( "Oatmeal Raisin 
Cookies", amount, price );
    IceCream    item3 = new IceCream( "Vanilla Ice 
Cream", amount, price, toppingPrice);
    System.out.println( item1 );
    System.out.println( item2 );
    System.out.println( item3 );

How output should look like How my output looks like

1 个答案:

答案 0 :(得分:0)

任何传递给System.out.println的对象都将调用其toString()方法。

假设您的示例代码中的三个System.out.println调用将输出类似

的三行

CANDY [2] Cost: $ 9.73 Tax : $0.68

在预期的输出中,则应将注意力集中在toString()CandyCookie类的IceCream方法上。这些方法中的每一个都应按预期返回字符串。

一个更简单,更具针对性的测试用例可能是:

//setup  

Cookie myCookie = new Cookie("namevalue", 3, 10.50)  

//test  

assert myCookie.toString == "COOKIE    [3]     Cost: $ 10.50  Tax : $0.73"  

如果您不熟悉断言或测试开发,则可以按照当前的方式手动执行断言,但是即使不使用assert关键字,我的建议还是将重点放在小得多的问题上。代码示例,如我上面的示例测试中的示例。

请注意,此测试假设税率采用与示例输出中相同的税率硬编码。