如何更改代码以免发生这种情况?
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 );
答案 0 :(得分:0)
任何传递给System.out.println
的对象都将调用其toString()
方法。
假设您的示例代码中的三个System.out.println
调用将输出类似
CANDY [2] Cost: $ 9.73 Tax : $0.68
在预期的输出中,则应将注意力集中在toString()
,Candy
和Cookie
类的IceCream
方法上。这些方法中的每一个都应按预期返回字符串。
一个更简单,更具针对性的测试用例可能是:
//setup
Cookie myCookie = new Cookie("namevalue", 3, 10.50)
//test
assert myCookie.toString == "COOKIE [3] Cost: $ 10.50 Tax : $0.73"
如果您不熟悉断言或测试开发,则可以按照当前的方式手动执行断言,但是即使不使用assert
关键字,我的建议还是将重点放在小得多的问题上。代码示例,如我上面的示例测试中的示例。
请注意,此测试假设税率采用与示例输出中相同的税率硬编码。