[解決済み] JUnitのクラスを特別なテストパッケージに分離する?
質問
テスト駆動開発の概念について、以下の本を読んで学んでいます。 職人の記事 (クリック 職人 下 トピック別 ) が、私の以前の質問に対する回答で推奨されています。 JUnitと適切なソフトウェアエンジニアリングを学ぶためのサンプルプロジェクト"。 . 私は今のところそれを愛しています
しかし、今は座って自分でやってみたいと思っています。簡単な答えで済むような質問をしたいのですが。
どのようにあなたのJUnitテストクラスと実際のコードを整理しますか? 私は主にパッケージ構造について話していますが、注意すべき他の概念も参考になるでしょう。
テストクラスを org.myname.project.test.* に置き、通常のコードを org.myname.project.* に置くのでしょうか?テスト クラスを通常のクラスと一緒に配置しますか? クラス名に接尾辞をつけるよりも、Testという接頭辞をつける方が好きですか?
これは私がすぐに心配すべきではない種類のもののように思えますが、私は非常に組織中心の人間です。私は ほとんど 実際に物事を成し遂げるよりも、何をすべきかを追跡する方法を考えることに多くの時間を費やすような人間なのです。
そして、現在きちんとパッケージに分かれているプロジェクトがあるのですが、そのプロジェクトがぐちゃぐちゃになってしまいました。すべてをリファクタリングしてテストを書こうとするのではなく、まずテストありきで新しく始めたいと考えています。しかし、最初に私は自分のテストがどこに行くのかを知る必要があります。
を編集します。 Mavenのことをすっかり忘れていたのですが、大多数の方が使っているようですね。以前、Mavenが完全に壊れてしまって、Antが必要な柔軟性を与えてくれたという特定の使用例があったので、結局Antに固執していたのですが、多分アプローチが間違っていたのだと思います。Mavenはテスト駆動開発と相性が良さそうなので、もう一度試してみようと思います。
どのように解決するのか?
私は、テストクラスをテストするプロジェクトクラスと同じパッケージに入れることを好みますが、次のように異なる物理ディレクトリに入れます。
myproject/src/com/foo/Bar.java
myproject/test/com/foo/BarTest.java
Mavenのプロジェクトでは、このようになります。
myproject/src/main/java/com/foo/Bar.java
myproject/src/test/java/com/foo/BarTest.java
この要点は、私のテストクラスがパッケージスコープのクラスとメンバにアクセスできる(そしてテストできる!)ことです。
上の例で示すように、私のテストクラスはテストされるクラスの名前に加え
Test
をサフィックスとして持っています。数百のテストクラスから検索を試みるのは、あまり面白いことではありません。
Test
...
更新 Ricketのコメントに触発されて:この方法でテストクラスは(典型的には)クラス名のプロジェクト単位のアルファベットリストでテストされた仲間のすぐ後に表示されます。(おかしなことに、私は意識的にどのように気づくこともなく、日々この恩恵を受けています...)
アップデート2。 多くの開発者(私を含む)がMavenを気に入っていますが、そうでない人も少なくとも同じくらいいるようです。IMHO では、Maven は Java プロジェクト (私はプロジェクトの約 90% をこのカテゴリに入れます...しかし、残りの 10% はまだかなりの少数派です) に非常に有用です。Mavenの規約を受け入れることができれば、簡単に使うことができますが、そうでない場合は、悲惨な苦労を強いられることになります。Mavenは、Antで培われた多くの人々にとって理解するのが難しいようで、どうやら全く異なる考え方を必要とするようです。(私自身、Antを使ったことがないので、この2つを比較することはできません。) 1つ確かなことは、ユニット (および統合) テストをプロセスにおける自然で第一級のステップにし、開発者がこの重要なプラクティスを採用するのを助けるということです。
関連
-
無効なメソッド宣言
-
シェルコマンドやスクリプトのJavaコール
-
Javaがリソースリークに遭遇した:'input'が閉じない 解決方法
-
[解決済み] プライベートメソッド、フィールド、インナークラスを持つクラスをテストするにはどうすればよいですか?
-
[解決済み] 整数の平方根が整数であるかどうかを判断する最速の方法
-
[解決済み] IntelliJのインスペクションで「シンボルを解決できない」と表示されたが、コードはコンパイルされる
-
[解決済み] Mavenが実行するJUnitテストを見つけ出せない
-
[解決済み] JUnit 4で条件付きでテストを無視する
-
[解決済み] JUnitの混乱:'extends TestCase'を使うか'@Test'を使うか?
-
[解決済み] JUnitテスト実行時のClass Not Found Exceptionについて
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
mvn' は、内部または外部のコマンド、操作可能なプログラムまたはバッチファイルとして認識されません。
-
XMLファイル操作時のjava.util.NoSuchElementExceptionを解決する方法。
-
ajax コミット リソースの読み込みに失敗しました: サーバーはステータス 400 で応答しました ()
-
が 'X-Frame-Options' を 'sameorigin' に設定したため、フレーム内に存在する。
-
配列定数は初期化子でのみ使用可能です。
-
List list = new ArrayList(); Error: ArrayList は型に解決できません。
-
ecplise プロンプトが表示されます。"選択したものは起動できません。" "最近の起動はありません。"
-
Web Project JavaでPropertiesファイルを読み込むと、「指定されたファイルがシステムで見つかりません」というソリューションが表示されます。
-
Java:未解決コンパイル問題の解決方法
-
テストが空であるかどうかを判断するためのオプションの処理