如何测试何时使用自定义Lombok Builder Bean

问题描述 投票:1回答:1

以下代码在我的bean使用带有自定义生成器的Lombok Builder注释的地方起作用。

当我想用值创建这个bean时,我在测试方面遇到问题。由于自定义生成器,我不能再使用Setters(有意使用),也不能仅使用.builder()了。

我的问题是,如何在测试中创建该bean?请注意,我确实要使用生成器,而不是希望使用Lombok的@Value批注。定制构建器对于与Jackson一起工作是必需的。

我可以想到的一种可能性是在自定义生成器中添加一个构造器,希望我不必为了测试而要做。

请咨询。谢谢。

正在安装Bean。

@Getter
@JsonDeserialize(builder = MyData.MyDataBuilder.class)
@Builder(builderClassName = "MyDataBuilder", toBuilder = true)
public class MyData {
    @JsonProperty("some_key")
    private String skey;
    @JsonProperty("name")
    private String name;

    // needed to work with Jackson
    @JsonPOJOBuilder(withPrefix = "")
    static class MyDataBuilder {}
}

测试尝试创建对象。如上所述,跟踪无效。

MyData.builder()
    .skey("12345")
    .name("some_name")
    .build();

MyData myData = new MyData();
myData.skey("12345");
myData.name("some_name");
java jackson lombok
1个回答
0
投票

您可以自定义构建器类以具有所需的任何访问级别。如果您不自定义Lombok,则默认将其设置为public

如果类本身和至少一个构造函数是public,则可以从任何地方(不仅是同一包)创建实例。但是,在大多数情况下,也没有理由为什么构建器类也不应为public:如果构建器模式在其程序包中是有益的,则在其他任何地方也可能都是有益的。

如果您不希望在其他包中实例化您的类,则构建器不应为public(也不应为构造器)。但是,那么您的测试还是有缺陷或包装错误。

因此,使定制构建器类为public,或更改测试。

© www.soinside.com 2019 - 2024. All rights reserved.