問題タブ [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.
java - JUnit + Java + ErrorCollector の問題
Java の ErrorCollector に問題があります。
2 つの値を比較するコードがあります。値が一致する場合、結果は合格です。値が一致しない場合、失敗します。シンプルに聞こえます。そこで、基本的なテスト ケースを作成しました。
これは、私が望んでいたとおりに動作します。ただし、このコードを他の場所から呼び出せるようにしたいと考えていました。そこで、次のような「メイン」ファイルを作成しました。
チェックを行うコードを次の場所に移動しました。
しかし、コードを実行すると、失敗を生成する値を導入した場合でも、常にパスが得られます。ここで何が間違っているのかわかりません。(私はコードが乱雑であることを知っています - これは私の問題を試して見るための最も簡単な方法に分解しようとする私の試みです.)
java - CLASSPATH を JUNIT_HOME/junit-4.12.jar に変更すると、Java コマンドが機能しなくなります
CLASSPATH
変数をシステム変数に変更するJUNIT_HOME/junit-4.12.jar
と、Java コマンドが機能しなくなります。
たとえば、クラス ファイルを実行したい場合、「メイン クラスが見つからないかロードできませんでしjavac
た」というエラーが表示されますが、正常に動作しています。
を削除するCLASSPATH
と、java
コマンドが再び機能し始めます。
java - java.lang.IllegalStateException: 一時フォルダはまだ作成されていません
@Rule
次のようなユースケース用に 新しいものを作成しています
私のTest
中で私はそれを
このテストを実行すると、エラーが発生します
独自のものを作成するとき@Rule
、既存のものに依存できないようです@Rule
それが問題ですか?どうすれば解決できますか?
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 つの子が取得されます。
私は何を間違っていますか、なぜ階層は通常の使用で階層とそれほど異なって見えるのですか?
java - サブフォルダーを含む JUnit TemporaryFolder を作成する方法
このようなツリーの baseFolder を表す JUnit TemporyFolder を作成したいと思います。
私が理解している限り、TemporaryFolder をセットアップして、そのフォルダーにある "newFolder()" 疑似フォルダーを作成することができます。しかし、下にレイヤーを作成するにはどうすればよいですか? 特に、テスト後にクリーンアップされる方法で。
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
。これについては別の質問をする予定です。
easymock - Unitils EasyMock および JUnit @Rule (JUnit 4.10 から 4.11 へ)
JUnitの@Rule
アノテーションを使用し、同時にsTemporaryFolder
を使用したい場合、4.11 では取得できますが、4.10 ではまだ機能するという問題があります。Mock
unitils.easymock
IlleagalStateException
JUnit
JUnit
したがって、次のテストは JUnit 4.10 で実行されIllegalStateException
、4.11 でスローされます。
extends UnitilsJUnit4
JUnit 4.11 では機能しないのではなく、モッキング機能にアノテーションを使用しても、次のようになります。
このコードをテストするときのエラー メッセージは次のとおりです。
追加でわかった新しいこと: JUnit 4.10 では、newFile()
呼び出しで文字列を渡すときに同じエラーを強制することもできます。
私の質問:
JUnit 4.11 でTemporaryFolders
or@Rule
を一般的に s と連携させる適切な方法は何ですか?unitils.easymock.annotation.Mock
それとも、easymock@Mock
アノテーションと@Rule
s を同時に使用したモッキングは単に不可能なのでしょうか?
バージョン:
java - SystemErrRule にログインしていないスレッドからの RunTimeException
スレッドからスローされた RunTimeException が System.err に追加されているかどうかをテストしようとしています。しかし、1分間待ってもSystem.errに見つかりません。以下はコード部分です
誰かがテストで間違いの可能性を指摘できますか?