我有下面的代碼使用Java 8流將ID添加到對象列表。但是,我不斷收到錯誤'流已經被操作或關閉'。但是,由於我最近開始指向JDK 1.8,因此我只打開一個流,而另一個被調用的代碼不使用流。IllegalStateException發生在單個調用Java流之後
我也會注意到,我在測試時看到使用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;
}
}
場
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方法。
我不明白你的代碼如何發生,你確定發佈的代碼嗎?你能讓它更小嗎? – Tunaki
請提供[MCVE]。 –
更新了簡化示例 – acvcu