2016-08-31 8 views
0

私はクラスMyClass.javaを持っているとしましょう、私たちはそれのためのテストを書く必要があります。それらのうちのいくつかは一度実行され、いくつかは複数回実行されます。 @Parametrized注釈付きテストのための単一のテストのためのMyClassTestSingle.javaMyClassTestMultiple.java - JUnit - 1つのクラスをテストするためにいくつのファイルがありますか?

  1. は、私は2つのテストクラスを作成しました。
  2. 私はそれらを1つのファイルから実行して、別のクラス(MyClassTestSuite.java)があるようにしたいと思っていました。
  3. MyClassTestSingle.java
  4. MyClassTestMultiple.java私は同じ値と同じパラメータを使用する方法私は

...これらのパラメータを含むクラスについて考え始めた。しかし、その後、私は、単一のクラスをテストするための4つのクラスを作成したい実現。そこで、私は、テストクラスをきれいに保つための「良いプラクティス」を探し始めました。しかし、上記の状況のテストを書くときに必要なクラスの数については、価値のある情報は見つけられませんでした。

私はMyClass.javaに設計問題があるかもしれないと考え始めましたが、確かに、パラメータ化された単一のテストを作成してスイートにパックする必要がある状況があります。

私は間違っていますか?それとも、私は何かを理解していないかもしれませんか?

+1

JUnitのパラメータ化されたテストクラスは痛みです。代わりにTestNGとその '@ DataProvider'を代わりに使用することを考えましたか? – fge

+0

また、あなたの 'MyClass'のコードはどうですか?パラメータ化されたテストを使用することは、一部のシナリオでは有効ですが、すべてではありません。もしあなたが "デザイン問題があるかもしれないと思って始めたら"、代わりに 'MyClass'のコードをポストしたいと思うかもしれません。 – fge

+0

@fgeいいえ、私はしていません。私は、Javaコードにとってより価値のあるテストフレームワークがあることさえ知りませんでした。ありがとう、私はそれを試してみましょう。 – notmyf4ulty

答えて

2

「正しい」または「間違った」方法はありません。しかし、いくつかの慣習があります。

まず、通常、テストケース名は通常Testで終了します。通常、クラスごとにテストケースを実装し、プロダクションクラスの後にTestという接尾辞を付けて名前を付けます。このコンベンションに従うと、さまざまなビルドとレポート作成ツールが追加構成なしで自動的に機能します。

テストケースを必要に応じて複数のクラスに分割することができます。例えば、テストの数やコードラインの数が合理的な制限を超えている場合や、別々に管理する必要のあるテストグループがある場合などです。あなたの例(パラメータ化されたテストとパラメータ化されていないテスト)は合理的なケースのように聞こえます。

したがって、MyClassSingleTest.javaMyClassMultipleTest.javaを作成します。

バリアント: MyTest.javaおよびMyTestParameterized.java

おそらくもっと意味のある名前を付けることをお勧めします。あなたのパラメータが何を意味するかを表現してみてください。たとえば、UserParameters,DbParametersなどです。この場合は、パラメータ化されたクラスMyClassUserTest.javaなどを呼び出します。

+0

仕様が分割されている場合、クラス名に 'MyClass_FooTest'や' MyClass_BarTest'のような名前を付けると便利なことがあります。 – chrylis

+0

これは私の一般的な経験であり、私の経験は限られていますが、同じクラスの設計脆弱性に対していくつかのテストクラスを作成しなければならないということが分かります。 SUT(System Under Test)のロジックを分割する必要があるかもしれないことを意味します。しかし、再び、それは私の限られた経験だけです。 – fge

+0

私はあなたのテストケースを分割しなければならないことに同意する傾向があります。コードの臭いは少なくともあります。クラスが複雑すぎることや、テストではなくクラスを分割することで解決できることを指摘できます。 –

関連する問題