オブジェクトのリストにIDを追加するためにJava 8ストリームを使用する以下のコードがあります。しかし、私はエラーが発生し続けている 'ストリームはすでに動作しているか、閉じている。しかし、私はストリームを1つしか開いていないので、最近呼び出された他のコードはJDK 1.8を指し始めてからストリームを使用しません。Javaストリームの単一コールの後でIllegalStateExceptionが発生する
また、テスト時に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();
}
}
I試験は、ストリームエラーなし通過@Mocked方法を削除した場合。
コードでどのように発生する可能性がありますか?投稿されたコードについては確かですか?あなたはそれをもっと小さくすることができますか? – Tunaki
[MCVE]を入力してください。 –
が簡略化された例で更新されました – acvcu