强制设置器为 class。在测试方法中填充值

Force setters to a class. To populate values in test methods

我想为一个没有 setter 的对象设置值。这纯粹是为了生成一个用于单元测试的对象。此 class 在我无法更改的库中。

public class Animal {
    protected String name;
    public Animal() {}
    public String getName() {
        return this.name;
    }
}

假设我必须为 Animal 创建一个对象并设置名称并测试它们的不同情况。

我更新了代码。这是接近实现的片段。变量是 'protected' 而 class 是 'public'

由于字段是 protected,子类可以访问它们。这意味着您有一个选择是 double-brace initialization 习惯用法,它创建一个本地子类:

    Animal animal = new Animal() {{
        name = "foo";
    }};

理想情况下,您应该尝试找到一种使用库提供的方法来创建这些对象的方法。您无法知道您在测试中创建的对象是否与应用程序运行时创建的对象相匹配。目标是最小化系统在测试运行中的行为方式与实际 运行 时的行为方式之间的差异。