ノート
[SUB-TASK] 8379818: Refactor java/nio/file/Files/StreamLinesTest.java to use JUnit
StreamLinesTest を TestNG から JUnit へ移行し,OpTestCase への依存を取り除きました。
概要#
java/nio/file/Files/StreamLinesTest.java は,Files.lines が返すストリームの挙動を確認するテストです1。
このテストは TestNG で実行されており,java.util.stream.OpTestCase と TestData という testlibrary 側の補助クラスにも依存していました2。
ところで,昨今の net では(というか OpenJDK 全体で) TestNG を JUnit5 へ移行しようという動きがあるようです。
今回の修正では,このテストを JUnit へ移行し,TestNG と OpTestCase への依存を取り除きました3。
具体的には,@DataProvider と @Test(dataProvider = "lines") を,JUnit の @ParameterizedTest と @MethodSource("lines") に置き換えます。
withData(...).expectedResult(...).exercise() で行っていた検証は,Files.lines の結果を toList() で受け取り,assertEquals で期待値と比較する形にしました。
try (Stream<String> s = Files.lines(p, cs)) {
assertEquals(expected, s.toList());
}
これにより,テストの実行基盤は testng/othervm から junit/othervm へ変わり,/lib/testlibrary/bootlib や java.base/java.util.stream.OpTestCase のビルド指定も不要になりました。
2026/03/18 JBS で発見#
本件は,既存テストを JUnit へ移行する一連の作業の一部として JBS で発見しました。
StreamLinesTest は単純な TestNG テストではなく,OpTestCase を継承していたため,単にアノテーションを置き換えるだけでは済みませんでした。
まず,データ生成側は Object[][] を返す TestNG の DataProvider から,Stream<Arguments> を返す JUnit の MethodSource へ変更しました。
加えて,説明文字列はアサーションには使わないため,JUnit の Arguments.argumentSet に渡して,テスト表示名として扱う形にしました4。
static Arguments of(String description, IntFunction<String> lineGenerator,
IntFunction<LineSeparator> separatorGenerator, int n, Charset cs) {
return Arguments.argumentSet(description, lineGenerator, separatorGenerator, n, cs);
}
2026/03/19-26 レビュー対応#
レビュー中には,まず public 修飾子が不要であるとの指摘をいただき,これを削除しました。
また,Marcono12345 氏から,説明文字列を引数として渡すより Arguments.argumentSet を使う方が適しているとのコメントをいただき,その形へ変更しました。
その後,Brian Burkhalter6 氏から,import の順序,および補助メソッド checkLines の必要性についてレビューをいただきました。
たしかに List#equals が要素数も含めて比較するため,個別にサイズを確認する処理は冗長です。
そのため checkLines を削除して,assertEquals(expected, s.toList()) へ直接置き換えました。
2026/03/26 統合リクエスト#
Burkhalter6 氏に Approve されました。
レビューを確認したのち,/integrate を行い,統合リクエストを行いました。
2026/03/27 統合#
同氏に /sponsor をしていただき,1ed1bb87 として JDK へ統合されました。
Footnotes#
-
https://github.com/openjdk/jdk/blob/f3069680e48712a7cacc4208550816300f68fbf4/test/jdk/java/nio/file/Files/StreamLinesTest.java ↩
-
https://github.com/openjdk/jdk/blob/f3069680e48712a7cacc4208550816300f68fbf4/test/jdk/java/nio/file/Files/StreamLinesTest.java#L26-L58 ↩
-
https://github.com/openjdk/jdk/commit/1ed1bb8ccbc7ba0cbb54f4354c64d39b3ea64d90 ↩