Java代码从测试方法返回只有一个对象

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

我要生成使用此Java代码的一些测试数据:

@GetMapping("/volumes")
    public ResponseEntity<List<DashboardDTO>> getProcessingVolumes() {

        return ResponseEntity.ok(testDate());
    }


    public List<DashboardDTO> testDate() {



        List<DashboardDTO> list = null;

        for (int i = 0; i <= 10; i++) {
            list = new ArrayList<>();
            DashboardDTO obj = new DashboardDTO();
            obj.setAmount(ThreadLocalRandom.current().nextInt(20, 500 + 1));

            LocalDate localDate = LocalDate.now().minus(Period.ofDays((new Random().nextInt(365 * 70))));
            Date date = Date.from(localDate.atStartOfDay(ZoneId.systemDefault()).toInstant());

            obj.setDate(date);
            obj.setNumber_of_transactions(ThreadLocalRandom.current().nextInt(300, 5000 + 1));
            list.add(obj);
        }
        return list;
    }

不过当只运行的代码生成一个对象。你知道我错了?我要生成10点测试对象。

java
2个回答
3
投票

这里:

for (int i = 0; i <= 10; i++) {
        list = new ArrayList<>();

您每次循环过程中创建一个新的结果列表。所以,最后的循环创建另一个列表中的最后一项!

只需将在循环前该行list = new ArrayList<>();,以便它能够只执行一次。

你的代码创建了11个新的列表,每一个都带有一个条目,并返回该最后一个列表对象。相反:创建一个列表,并添加11元,然后返回一个列表。


3
投票
for (int i = 0; i <= 10; i++) {
        list = new ArrayList<>(); //(Fix here)--> resetting your list everytime causing only single object to return.

尝试初始化仅一次。

List<DashboardDTO> list = new ArrayList<>();
    for (int i = 0; i <= 10; i++) {
        DashboardDTO obj = new DashboardDTO();
        obj.setAmount(ThreadLocalRandom.current().nextInt(20, 500 + 1));

        LocalDate localDate = LocalDate.now().minus(Period.ofDays((new Random().nextInt(365 * 70))));
        Date date = Date.from(localDate.atStartOfDay(ZoneId.systemDefault()).toInstant());

        obj.setDate(date);
        obj.setNumber_of_transactions(ThreadLocalRandom.current().nextInt(300, 5000 + 1));
        list.add(obj);
    }
    return list;
© www.soinside.com 2019 - 2024. All rights reserved.