問題タブ [junit-rule]

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 投票する
1 に答える
992 参照

java - JUnit + Java + ErrorCollector の問題

Java の ErrorCollector に問題があります。

2 つの値を比較するコードがあります。値が一致する場合、結果は合格です。値が一致しない場合、失敗します。シンプルに聞こえます。そこで、基本的なテスト ケースを作成しました。

これは、私が望んでいたとおりに動作します。ただし、このコードを他の場所から呼び出せるようにしたいと考えていました。そこで、次のような「メイン」ファイルを作成しました。

チェックを行うコードを次の場所に移動しました。

しかし、コードを実行すると、失敗を生成する値を導入した場合でも、常にパスが得られます。ここで何が間違っているのかわかりません。(私はコードが乱雑であることを知っています - これは私の問題を試して見るための最も簡単な方法に分解しようとする私の試みです.)

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

java - CLASSPATH を JUNIT_HOME/junit-4.12.jar に変更すると、Java コマンドが機能しなくなります

CLASSPATH変数をシステム変数に変更するJUNIT_HOME/junit-4.12.jarと、Java コマンドが機能しなくなります。

たとえば、クラス ファイルを実行したい場合、「メイン クラスが見つからないかロードできませんでしjavacた」というエラーが表示されますが、正常に動作しています。

を削除するCLASSPATHと、javaコマンドが再び機能し始めます。

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

java - java.lang.IllegalStateException: 一時フォルダはまだ作成されていません

@Rule次のようなユースケース用に 新しいものを作成しています

私のTest中で私はそれを

このテストを実行すると、エラーが発生します

独自のものを作成するとき@Rule、既存のものに依存できないようです@Rule

それが問題ですか?どうすれば解決できますか?

0 投票する
1 に答える
665 参照

android - PreferenceFragment のテストは、Espresso および JUnit-Rules または ActivityInstrumentationTestCase2 では機能しません

エスプレッソでテストしたい設定画面のあるアプリに取り組んでいます。この設定画面で、次のような PreferenceFragment を追加します。

設定_アクティビティ

この設定画面は普通に使う分には問題ないのですが、エスプレッソテストで設定を確認・変更しようとすると何かがおかしいです。

AndroidJUnit4 テスト

これは私がエスプレッソから得るエラーです:

さらに調査したところ、アプリを通常に使用する場合と Espresso テストで使用する場合で、設定ページのレイアウトが異なって見えることがわかりました。通常、id content_frame を持つ LinearLayout 内には、1 つの子 (id android:id/list を持つ) しかありません。しかし、Espresso テストを実行すると、同じ LinearLayout ビューに 2 つの子が含まれていることがわかります。

Espresso テスト内で次のコードを実行すると:

次の出力が得られます。

しかし、エスプレッソ テストではなくアクティビティで同様のコードを実行すると、次の出力が得られます。

そのため、通常アプリを使用すると取得する id android:id/list を持つ 1 つの子だけではなく、エスプレッソ テストを実行すると 2 つの子が取得されます。

私は何を間違っていますか、なぜ階層は通常の使用で階層とそれほど異なって見えるのですか?

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

java - サブフォルダーを含む JUnit TemporaryFolder を作成する方法

このようなツリーの baseFolder を表す JUnit TemporyFolder を作成したいと思います。

私が理解している限り、TemporaryFolder をセットアップして、そのフォルダーにある "newFolder()" 疑似フォルダーを作成することができます。しかし、下にレイヤーを作成するにはどうすればよいですか? 特に、テスト後にクリーンアップされる方法で。

0 投票する
1 に答える
1394 参照

java - public private フィールドのパラドックスのため、Junit @Rule を使用した CdiUnit テストは不可能です

私の問題を再現するには、次のスニペットで十分です。

  • thrown属性を設定しpublicてエラーを取得するかorg.jboss.weld.exceptions.DefinitionException: WELD-000075: Normal scoped managed bean implementation class has a public field
  • publicまたは、修飾子を削除してエラーが発生しますorg.junit.internal.runners.rules.ValidationError: The @Rule 'thrown' must be public.
  • publicまた、修飾子を配置し@Dependentて、クラスに注釈スコープを追加しようとしましたが、エラーが発生しましたorg.jboss.weld.exceptions.DefinitionException: WELD-000046: At most one scope may be specified on [EnhancedAnnotatedTypeImpl] public @Dependent @ApplicationScoped @RunWith

不要なコードをすべて取り除きましたが、これは非常に複雑な単体テストであり、モック、CDI によるサービス インジェクション、および例外をスローすることが予想されるいくつかのテスト メソッドを使用しています。

したがって、私の問題は、一方でWeldはクラスをプロキシ化できないため、すべてのフィールドをパブリックにしないことを望んでおり、他方では、JUnitはリフレクションを使用してアクセスしているためRuleフィールドをパブリックにしたいということです。setAccessible(true)セキュリティ マネージャがアクティブな場合があるため、このメソッドを使用したくありません。そのパラドックスにどう対処するか?

注意:この回答に対するヒントコメントも見つかりました。

@Rule でメソッドにアノテーションを付けることもできるので、これにより問題を回避できます

しかし、メソッドに注釈を付けたjunitテストの例は見つかりませんでした@Rule。これについては別の質問をする予定です。

0 投票する
0 に答える
297 参照

easymock - Unitils EasyMock および JUnit @Rule (JUnit 4.10 から 4.11 へ)

JUnitの@Ruleアノテーションを使用し、同時にsTemporaryFolderを使用したい場合、4.11 では取得できますが、4.10 ではまだ機能するという問題があります。Mockunitils.easymockIlleagalStateExceptionJUnitJUnit

したがって、次のテストは JUnit 4.10 で実行されIllegalStateException、4.11 でスローされます。

extends UnitilsJUnit4JUnit 4.11 では機能しないのではなく、モッキング機能にアノテーションを使用しても、次のようになります。

このコードをテストするときのエラー メッセージは次のとおりです。

追加でわかった新しいこと: JUnit 4.10 では、newFile()呼び出しで文字列を渡すときに同じエラーを強制することもできます。

私の質問:

JUnit 4.11 でTemporaryFoldersor@Ruleを一般的に s と連携させる適切な方法は何ですか?unitils.easymock.annotation.Mock

それとも、easymock@Mockアノテーションと@Rules を同時に使用したモッキングは単に不可能なのでしょうか?

バージョン:

0 投票する
1 に答える
62 参照

java - SystemErrRule にログインしていないスレッドからの RunTimeException

スレッドからスローされた RunTimeException が System.err に追加されているかどうかをテストしようとしています。しかし、1分間待ってもSystem.errに見つかりません。以下はコード部分です

誰かがテストで間違いの可能性を指摘できますか?