首页 > 解决方案 > random-beans 初始化 bean 集合大小与配置大小不匹配

问题描述

我正在尝试使用 random-beans 库更快地创建我的测试 bean。使用的依赖项是(https://github.com/benas/random-beans):

 <dependency>
        <groupId>io.github.benas</groupId>
        <artifactId>random-beans</artifactId>
        <version>3.7.0</version>
        <scope>test</scope>
</dependency>

豆类是:

@Entity
public class User {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;

private String name;

private String  surname;

private Integer age;

@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true)
private List<Book> books;

@Entity
public class Book {


@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;

private String title;

private String description;

private Integer pages; 

这是我的测试代码(将 collectionsize 限制为 1):

https://github.com/cristianprofile/create-test-random-beans/blob/master/src/test/java/com/cromero/randombeaninstantationtesting/RandomBeanInstantationTestingApplicationTests.java#L41

 EnhancedRandom random = EnhancedRandomBuilder.aNewEnhancedRandomBuilder()
            .charset(forName("UTF-8"))
            .stringLengthRange(5, 50)
            .collectionSizeRange(1, 1)
            .scanClasspathForConcreteTypes(true)
            .overrideDefaultInitialization(false)
            .build();
    User user = random.random(User.class);

    assertThat(user.getBooks()).hasSize(1);

我的测试在这个断言中失败:

  assertThat(user.getBooks()).hasSize(1);

为什么书籍大小与我使用随机对象配置的不同。这是为什么?

标签: javaspringtestingrandom-beans

解决方案


random在非静态random实例上调用静态方法,您应该调用该nextObject方法:

User user = random.nextObject(User.class);

由于该方法EnhancedRandom.random是静态的,因此它只需要默认配置选项,而不是在EnhancedRandom实例上设置的选项。

希望这可以帮助。


推荐阅读