如何在 XML YML 文件中存储测试使用的示例对象?

How to store sample objects used by tests in XML YML files?

当我创建我的单元测试时,我使用在一个抽象 class 中声明和初始化测试使用的大量示例共享对象,由带有测试的 classes 扩展。

例如我在摘要 class 中定义了产品“phone”,并在一个名为“init”的方法中对其进行了初始化,并用 @Before 进行了注释。我在子 class 中创建方法 @Test“savePhoneTest”,它使用“phone”调用方法“savePhone”。这个对象总是重新初始化,我可以在其他测试中使用它。

是否可以将示例对象存储在 XML / YML 文件中?这是一个好习惯吗?我怎样才能取回对象?我用spring引导。 谢谢

是的,您可以使用 XML/YAML/JSON 来存储示例对象。它将帮助您编写更少的代码来创建示例对象。此外,通过使用这种方法,您的测试用例将变得更易于维护。

我更喜欢 JSON 而不是 XML/YAML

假设你有一个 Product class 如下所示,

Product.java

@Data
@NoArgsConstructor
public class Product {
    private int id;
    private String name;
    private float price;
    private String brand;
}

您可以创建JSON file来存储对象。 Product class 的 JSON file 看起来像:

product.json

{
    "id": 1000,
    "name": "Smart phone",
    "price": 60000.0,
    "brand": "SAMSUNG"
}

只要您需要 Product class 的任何对象,您都可以使用 JSON file 创建该对象。下面的示例显示了如何从 JSON file:

创建 java 对象
InputStream inputStream = Product.class.getResourceAsStream("/product.json");
Product product = new ObjectMapper().readValue(inputStream, Product.class);