問題タブ [junit]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
6 に答える
10153 参照

java - オブジェクト構築をモックする方法は?

JavaでJMockを使用してオブジェクト構築をモックする方法はありますか?

たとえば、そのようなメソッドがある場合:

...テストメソッドでオブジェクト構築の期待をモックアウトする方法はありますか?

型をチェックするための余分なコードを用意するのではなく、特定のコンストラクターが呼び出されていることを期待できるようにしたいと考えています (私の例のように常に複雑で単純であるとは限らないため)。

したがって、代わりに:

特定のコンストラクターが呼び出されることを期待できます。少しきれいにして、実際にテストされているものをより読みやすい方法で表現するためです。

単純な例で申し訳ありませんが、私が取り組んでいる実際の問題はもう少し複雑ですが、期待することで単純化できます。


もう少し背景について:

ラッパー オブジェクトを作成する単純なファクトリ メソッドがあります。ラップされるオブジェクトは、テスト クラス (既存のコード) で取得するのが難しいパラメーターを必要とする場合があるため、それらを構築することは困難です。

おそらく、私が実際に探しているものに近いのは、スタブするすべてのメソッドを指定せずに、(CGLib を使用して) クラス全体を一気にモックする方法はありますか?

したがって、モックはコンストラクターにラップされているため、明らかにメソッドを呼び出すことができます.JMockは各メソッドを動的にモックアウトできますか?

それはかなり複雑になるので、私の推測ではノーです。しかし、私が間違ったツリーを吠えていることを知っていることも価値があります:-)

0 投票する
6 に答える
1787 参照

java - JUnit出力とOutOfMemoryError

アプリケーションでいくつかのJUnitテストを実行しています。すべてのテストには、それぞれのメソッドを10000回呼び出すforループがあります。テストされたメソッドは、大量のログを生成します。これらのログは、テスト出力としてJUnitによって自動的に収集されます。JUnitが出力を保持する文字列バッファが大きくなりすぎるため、この状況はOutOfMemoryErrorになります。テスト中にこれらのログは必要ないので、JUnitに「プログラム出力を保持しない」ように指示する方法があれば十分です。何か案は?

0 投票する
10 に答える
32891 参照

java - ゲッターとセッターを自動テストする Java 単体テスト フレームワークはありますか?

些細な getter/setter メソッドをテストする必要があるかどうかについて、Java (およびその他のコミュニティでは確かに) でよく知られている議論があります。通常、これはコード カバレッジに関するものです。これは開かれた議論であり、ここで答えようとしないことに同意しましょう。

Java リフレクションを使用してそのようなメソッドを自動テストすることに関するブログ投稿がいくつかあります。

そのような機能を提供するフレームワーク (jUnit など) はありますか? たとえば、「このテスト T は、クラス C のすべてのゲッター/セッターを自動テストする必要があります。それらは標準であると主張するからです」という注釈。

それは価値を追加するように私には思えます。それが構成可能であれば、「議論」はユーザーのオプションとして残されるでしょう。

0 投票する
5 に答える
24189 参照

java - EclipseでJUnit起動構成の作業ディレクトリをデフォルト設定するにはどうすればよいですか?

Javaコード(テストコードではない)は現在のディレクトリからファイルを読み取ります。つまり、コードを実行するたびに作業ディレクトリを適切に設定する必要があります。

Eclipse内からJUnitテストを起動すると、起動構成が自動的に作成されます。問題は、その起動構成の作業ディレクトリが常にデフォルトでルートプロジェクトディレクトリであり、常に間違っていることです。テストは失敗します。起動構成ダイアログを開き、作業ディレクトリを変更して、テストを再起動する必要があります。これは非常に迷惑です。単一のテストメソッドを実行した場合にも同じことが起こります。

私はすでにこれらを検討しました:

  • テストコードから現在のディレクトリを変更する-設計上不可能です。
  • ファイルを開くときは、親ディレクトリパラメータを渡します。これは多くの場所に影響を与えるため、難しすぎます。
  • Eclipseの起動構成のコピー機能を使用して、正しい作業ディレクトリがすでに設定されている既存の構成から新しい起動構成を作成します。「このテスト/メソッドをJUnitテストとして実行する」を呼び出すだけで、テストまたはテストメソッドをすばやく起動したいので、これは実際には意味がありません。

全体として、コードではなく、Eclipseの責任のようです。

将来、新しく作成されたすべてのJUnit起動構成のデフォルトの作業ディレクトリを設定する方法はありますか?

0 投票する
23 に答える
50431 参照

java - ルート化されていないテスト

すべてのテストを Eclipse (Eclipse 3.4 'Ganymede') で実行すると、「Unrooted Tests」の下に 1 つのテストがリストされます。私は Junit 3.8 を使用しており、この特定のテストは TestCase を拡張します。このテストと他のテストの違いはわかりません。これが Eclipse 3.3 (Europa) で発生したことを覚えていません。

説明:

まだ JUnit 4.0 に移行していないため、アノテーションは使用していません。私もググったところ、ほとんどの人が JUnit 4 で問題を抱えているように見えましたが、解決策は見当たりませんでした。この時点で、テストはローカルと CruiseControl の両方でパスするので、あまり心配していませんが、興味があります。

ただし、これを最初に見たときは、他のテストで実行した場合にのみ失敗する失敗したテストでした。これにより、私が見つけられなかった「ルート化されていない」問題の解決策を探して、うさぎの穴に落ちました。最終的に、適切に取り壊されていない別のテストで犯人を見つけました。

同意します。Eclipse の問題のようです。

0 投票する
10 に答える
82918 参照

java - JAX-RS Web サービスをテストしていますか?

現在、 JAX-RS (Java API for RESTful Web Services) ベースの Web サービスの自動テストを作成する方法を探しています。

基本的に、特定の入力を送信して、期待される応答が得られることを確認する方法が必要です。JUnit経由でこれを行うことを好みますが、それをどのように達成できるかわかりません。

Web サービスをテストするためにどのようなアプローチを使用していますか?

更新: entzik が指摘したように、Web サービスをビジネス ロジックから切り離すことで、ビジネス ロジックの単体テストを行うことができます。ただし、正しい HTTP ステータス コードなどもテストしたいと思います。

0 投票する
7 に答える
4332 参照

java - Ant Junitテストは、IDEよりもantの方がはるかに遅く実行されます-何を見るべきですか?

私はantを介してjunitテストを実行していますが、IDEを介した場合よりも実行速度が大幅に遅くなっています。私のアリの呼び出しは次のとおりです。

私のIDE(0.067s)でほぼ瞬時に実行される同じテストは、Antを介して実行されると4.632秒かかります。以前は、junit forkパラメーターを使用することで、このようなテストの問題をスピードアップすることができましたが、この場合、これは役に立たないようです。これらのテストを高速化するために、どのプロパティまたはパラメーターを確認できますか?

より詳しい情報:

IDEから報告された時間とjunitタスクが出力する時間を使用しています。これは、アリの実行の最後に報告された合計時間ではありません。

したがって、奇妙なことに、この問題は自然に解決しました。この問題の原因は何でしょうか?システムはローカルディスク上で実行されるため、問題はありません。

0 投票する
8 に答える
4149 参照

java - ANT、Javacc、JUnit、および Java クラスのコンパイルを使用して Linux でビルド時間を短縮するためのヒント

JavaCC を使用して一部の Java 5 クラスを自動生成し、すべてのクラスをコンパイルして単体テストを実行するのに、開発者のマシンで約 12 分かかる大規模なコードベースがあります。

このプロジェクトは、グループでビルドできる複数のプロジェクトで構成されていますが、10 分以内に完全にビルドすることを目指しています。

このビルド時間を短縮するためのヒントは何ですか?

ありがとう

0 投票する
2 に答える
39472 参照

java - Hamcrest での複数の正しい結果 (or-matcher はありますか?)

私はマッチャーに比較的慣れていません。JUnit と組み合わせてhamcrest をいじっていますが、ちょっと気に入っています。

複数の選択肢のうちの1つが正しいと述べる方法はありますか?

何かのようなもの

私がテストしているメソッドは、コレクションの 1 つの要素を返します。リストには複数の候補が含まれる場合があります。私の現在の実装では最初のヒットが返されますが、これは必須ではありません。可能な候補のいずれかが返された場合、テストケースが成功することを望みます。これを Java でどのように表現しますか?

(私はhamcrest-alternativesを受け入れています)

0 投票する
9 に答える
8385 参照

java - テストのグループを実行するための JUnit TestRunner はありますか?

私は現在 JUnit 4 を使用しており、テストを任意の組み合わせで選択的に実行できるグループに分割する必要があります。TestNG にはテストに注釈を付けてグループに割り当てる機能があることは知っていますが、今のところ TestNG に移行できません。これは、いくつかのカスタム アノテーションとカスタム JUnit TestRunner を使用して、JUnit で簡単に実現できるようです。JUnit ドキュメントと Web の両方をチェックしましたが、そのようなものは見つかりませんでした。そのような TestRunner を知っている人はいますか?

更新: テスト スイートに関するご返信ありがとうございます。元の質問でこれらに対処する必要がありました。では、テスト スイートを使用したくありません。手動で作成して管理する必要があるためです。つまり、すべてのテストに手を加えて手動でスイートに配置する必要があります (作業が多すぎて、メンテナンスの悪夢です)。私がする必要があるのは、実際には統合テストであるいくつかを除いて、すべての単体テストを実行することだけです。したがって、これらに注釈を付けて、他のすべてを実行したいと思います。また、統合テストだけを実行したい場合もあります。また、単体テストを複数のグループに入れる必要がありますが、これはスイートでは不可能です。これが問題を解決するのに役立つことを願っています。

更新 2: JUnit にこの OOB がない場合、これを JUnit に追加するオープン ソース ライブラリを探しています (注釈 + カスタム JUnit テスト ランナー)。