gpt4 book ai didi

java - 单次调用 Java 流后发生 IllegalStateException

转载 作者:行者123 更新时间:2023-12-01 09:56:13 25 4
gpt4 key购买 nike

我有下面的代码,使用 Java 8 流将 ID 添加到对象列表中。但是,我不断收到错误“流已被操作或关闭”。但是,我只打开一个流,并且调用的其他代码不使用流,因为我最近开始指向 JDK 1.8。

我还会注意到,我在测试时使用 JUnit 看到了错误,因此不确定这是否是问题所在。

有什么想法吗?

编辑:删除了原始代码并添加了简化的示例。该问题似乎与使用 @Mocked 方法参数有关。

public class FooService {

public Collection<Course> getCourses() {
List<Course> result = Arrays.asList(new Course(), new Course(), new Course());
result.stream().forEach(c -> c.setUrl("foobar"));

return result;
}

}

类(class)

public class Course {

public String getUrl() {
return url;
}

public void setUrl(String url) {
this.url = url;
}

private String url;

}

测试代码

@RunWith(JMockit.class)
public class FooServiceTest {

@Tested
FooService foobarService;

@Test
public void testOne(@Mocked Collection<String> bar) {
foobarService.getCourses();
}

@Test
public void testTwo(@Mocked Collection<String> bar) {
foobarService.getCourses();
}

}

如果我删除了 @Mocked 方法,测试就会通过,并且不会出现 Stream 错误。

最佳答案

您确定要/需要在代码中模拟集合吗? @Mocked 注释意味着泛型类型 String 的所有集合都将在您从该方法执行的任何代码中被模拟。我不太确定您为什么要这样做,但如果您这样做,您可能需要使用 Expectations block 指定集合的​​行为。

关于java - 单次调用 Java 流后发生 IllegalStateException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37189913/

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