gpt4 book ai didi

java - 验收测试遗留代码

转载 作者:行者123 更新时间:2023-11-29 09:15:52 24 4
gpt4 key购买 nike

<分区>

我正在学习敏捷实践类(class),并且有作业。在类(class)中,我学习了如何使用 FIT 进行自动验收测试。在我看来,FIT 似乎快要死了,我不再确定它是否是我想要用于作业的技术。无论如何...

我有遗留系统要测试,一切都设计/编码不当。当然没有测试,而且我不允许在编写任何验收测试之前重构或更改功能。

为简单起见,假设该系统是一个商店收据系统,它将产品 list (含价格)和总成本打印到标准输出流。像这样:

public class ReceiptSystem
{
List<Product> boughtProducts = new ArrayList<Product>();

public void buyProduct(Product p)
{
boughtProducts.add(p);
}

public void printReceipt()
{
List<ReceiptLine> receipt = new ArrayList<ReceiptLine>();
int total = 0;
int price;
for(List<Product> boughtProducts : boughtProduct)
{
price = SomeThirdPartyClass.calculatePrice(boughtProduct.getBarcode());
System.out.println(boughtProduct + ": " + price);
total += price;
}

System.out.println("TOTAL: " + total);
}
}

问题是价格是由带有外部库的第三方系统计算的,所以我不知道它们,而且我发现很难(如果不是不可能的话)使用 FIT 编写验收测试。在正常情况下,我会做类似的事情:

购物 list (输入):

 -------------------
| product's barcode |
-------------------
| 111111111 |
-------------------
| 123456789 |
-------------------
| 987654321 |
-------------------
| 999999999 |
-------------------

收据(预期输出):

 ------------------
| receipt |
------------------
| 111111111: 1.99 |
------------------
| 123456789: 2.99 |
------------------
| 987654321: 3.99 |
------------------
| 999999999: 4.99 |
------------------
| TOTAL: 13.96 |
------------------

但我如何在不知道价格的情况下实现这一目标?最好的策略是什么?是否有任何其他框架可以实现这一目标?

谢谢。

更新:SomeThirdPartyClassfinal,尝试模拟它或为其编写代理类会出现以下错误:

Cannot subclass final class class SomeThirdPartyClass

此外,它是不可变的,公共(public)构造函数没有参数。看来老师是故意的....

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com