1

すべての単体テストが、テストするクラス内の静的なネストされたクラスとして定義されている特定のオープン ソース ライブラリを調べてきました。次に例を示します。

public class Foo {

    public int bar() { ... }

    public static class UnitTest {
        @Test
        public void testBar() { ... }
    }
}

これまでにこれを行うプロジェクトや Java コードベースを見たことがなく、その背後にある考え方に非常に興味があります。

  • FooTest別のソース フォルダーに別のクラスを配置するよりも、このパターンに利点はありますsrc/test/javaか?

  • これは、 Gradleをビルド ツールとして使用するプロジェクトの規則ですか?

4

2 に答える 2

5

Jon Skeetが提案したように、私は問題のプロジェクトのドキュメント内に答えを見つけました。

Hystrixには、すべての単体テストが、個別の/ test /フォルダーではなく、内部クラスとしてあります。

なんで?

  • 低摩擦
  • コンテクスト
  • カプセル化
  • リファクタリング
  • 自己文書化

推論の詳細については、このブログ投稿を参照してください:内部クラスとしてのJUnitテスト

于 2013-03-15T17:52:10.207 に答える
2

プライベートメンバーへのアクセス以外に、ネストされた内部クラスとして単体テストを作成する利点はないようです。私が考えることができる不利な点は次のとおりです。

  • それはあなたのJavaクラスをかなり大きくて扱いにくいものにします。
  • 最終的なjarファイルにはテストコードが含まれていますが、これは本番ランタイムではおそらく不要であり、通常は適切な方法ではありません(本番コードをテストコードから分離しておく)。

また、 JavaプラグインのGradleドキュメントによると、テストをsrc / test / javaに保持することを推奨しているため、これはGradle固有の規則ではないと思います。

于 2013-03-15T17:55:32.043 に答える