gpt4 book ai didi

java - 如何为我的 junit 测试使用循环和流?

转载 作者:行者123 更新时间:2023-12-03 07:50:04 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Local variable log defined in an enclosing scope must be final or effectively final

(6 个回答)


1年前关闭。




我有以下测试:

@Test
void verifyCorrectLimitForGroups() throws SQLException {
AbstractDAO<StudentModel, Long> studentsDAO = new StudentDAO(myDatasource);
List<StudentModel> students = studentsDAO.findAll();
for(int a=1;a<11;a++) {
assertTrue(students.stream().filter(i->i.getGroupID()==a).count()<30);
}
}
我的目标是测试 groupIDs 的学生是否限制为 30从 1 到 10 从未超过。为此,我决定使用 java 8 API 流和一个简单的 for 循环。不幸的是,我遇到了一个编译问题: Local variable a defined in an enclosing scope must be final or effectively final.这是否意味着我不能这样做,我应该找到不同的方法?

最佳答案

正如错误所说,在 lambda 表达式中使用的变量必须是“最终的或有效的最终”,并且 a显然是可变的。一种可能的解决方案是创建一个虚拟变量,该变量在循环的每次迭代中都重新定义为 a。的值,但因此不会发生突变:

for (int a = 1; a < 11; a++) {
int x = a; // Effectively final
assertTrue(students.stream().filter(i -> i.getGroupID() == x).count() < 30);
}

关于java - 如何为我的 junit 测试使用循环和流?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64948517/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com