問題タブ [unitils]
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.
junit - Unitils は標準の EasyMock の動作を壊しますか?
仕事中のプロジェクトで、本当に厄介なバグ/機能に遭遇しました。私は解決策を見つけましたが、なぜそれが起こっているのか本当に興味があります。プロジェクトには、単純な古い EasyMock の代わりに unitil で記述されたレガシー テストが含まれている必要があります。次の 2 つのテスト クラスが順番に実行されたとします。
両方のテストを別々に実行すると、正常に実行されます。どちらも緑色で、どちらも機能しています。ただし、それらをすぐに実行すると、2 番目のテストは java.lang.IllegalStateException: x matchers expected, y records エラーで失敗します (x と y はもちろん int です。これは偽の例であるため、実数はありません)。
assertNotInvoked 行を myRepo.assertNotInvoked().getById(null); に変更して、これを「修正」しました。
もちろん、これは実際には修正ではありません。マッチャーの使用を回避しただけで、レガシーテストケースを壊していないのではないかと思っています... EasyMock + Unitilsの経験が十分にある人はいますか理解するのに役立ちますこれ ?私の最善の「推測」は、AssertNotInvoked が EasyMock.replay()、EasyMock.verify() ブロックで適切に終了していないということですが、間違っている可能性があります。
junit - unitils を使用した H2 データベース
拡張 unitils を使用して、データ セットの 1 つでデータベースを初期化しました。Mysql、HsqlDB、PostgreSql では問題はありませんでしたが、H2 では問題が見つかりました。誰かがすでに unitil で H2 をテストしたことはありますか? その場合は、unitils.properties の内容を提供していただきありがとうございます。
私の構成の下
これは私が得る例外です
unitils-dbunit 3.3 を使用しました
spring - Unitils @SpringApplicationContext - スプリングコンテキストの初期化にかかる時間を見つける方法は?
テストには unitils を使用しています。フェイルセーフ テスト レポートに 90 を超えるスプリング コンテキスト リフレッシュ メッセージが表示されます。これらのスプリング コンテキストの初期化にかかる時間を知る必要があります。Unitils には適切なログがないため、フレームワーク ログで追跡できません。
は@SpringApplicationContext
テストクラスの上にあるため、自分のテストクラスでロガーを使用することはできません
これらのクラスはすべてSpring xmlに登録する必要があり、Spring xmlに登録されているBeanはコンテキストが初期化された後にのみロードされるため、アドバイスまたは認識クラスまたはインターセプターを記述しても役に立ちません。
アプリケーション リスナ クラスを作成するContextRefreshedEvent
と、コンテキストが初期化されずにロードされたときの のみをキャッチできます。
のメソッドをContextStartedEvent
使用して ApplicationContext が開始されたときに公開されているため、 をキャッチできません。unitils は動的に newを作成して、スプリング コンテキストを作成します。start()
ConfigurableApplicationContext interface
ClassPathXmlApplicationContext(..,..);
(class:org.unitils.spring.util.ClassPathXmlApplicationContextFactory)
春のコンテキストの初期化時間を計算するにはどうすればよいですか?
spring - Spring xml は、子クラスで宣言されたときに Bean を初期化しますが、親クラスで宣言されている場合、Bean の初期化は失敗します
@SpringApplicationContext
私のアプリケーションには、 (異なるモジュールからの異なるSpring xmlを使用して)使用するUnitilsベースの統合テストクラスがたくさんあります。作成されるスプリング コンテキストの数を減らすために、ベース テスト クラスを作成し、このベース クラスからのみスプリング コンテキストを初期化し、他のすべてのテストをこのベース クラスを拡張するようにすることを計画しました。
基本クラス:
com.org.module1.mypack;
@SpringApplicationContext({ "spring-module1.xml", "spring-module2.xml", "spring-module3.xml" }) public 抽象クラス BaseTest{ ... }
変更前の子クラス:
com.org.module1.mypack.performance;
@SpringApplicationContext({ "spring-module4.xml" }) public class ChildTest extends BaseTest{ .. }
変更後の基本クラス:
com.org.module1.mypack;
@SpringApplicationContext({ "spring-module1.xml", "spring-module2.xml", "spring-module3.xml", "spring-module4.xml" }) public 抽象クラス BaseTest{ ... }
変更後の子クラス:
com.org.module1.mypack.performance;
//@SpringApplicationContext({ "spring-module4.xml" }) public class ChildTest extends BaseTest{ .. }
以下のエラー メッセージが表示され、コンテキストが作成されません。
org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [com.org.module5.prepare.MyBean] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true), @org.springframework.beans.factory.annotation.Qualifier(value=myBean)}
spring-module4.xml が子クラスにある場合は、コンテキストが正常に作成され、すべてのテストが通常どおり実行されました。
注: spring-module4.xml が src/test/resources にあることを除いて、すべての spring xml ファイルは src/main/resources にあります。
unit-testing - DB単体テスト。制約の無効化
DAO レイヤーをテストする単体テストのセットがあります。次の要件があります: - テストの 1 つのサブセットについて、制約 (外部キー、一意、非 null) を無効にする必要があります。- 他のサブセットについては、そのままにしておく必要があります (ここでデータの整合性をチェックします)。
したがって、いくつかのテストでは、制約を有効にし、他のテストでは無効にしたいと考えています。
まず、制約オプションを無効にするため、DbMantainer(Unitilsの一部)を使用しようとしました。しかし、その後、ソースを調べたところ、移行プロセスを開始した瞬間にのみ(テーブルの変更を介して)制約を削除できることがわかりました。制約が一度削除された後 (最初のテストを開始する前)、後で (整合性テストを) 有効にすることはできません。
私の質問は次のとおりです。1. 制約を無効にできる他のツール (DbMantainer や Unitils など) を提案してもらえますか? 2. そのようなツールが存在しない場合、db 単体テストで制約を無効および有効にするための最良のオプションは何だと思いますか?
java - 削除されたオブジェクトは、引き続き Hibernate のデータベースに更新を発行します
エンティティを削除するという問題がありますが、それを変更するとデータベースが変更されます。これは私の DAO のメソッドの一部です。
DAO メソッドの場合:
前:
メソッドの後
ご覧のとおり、AVATAR の元の行には null の外部キーが含まれています。
なんで?これは、Unitils と Spring を使用したユニット/統合テストで発生しており、 Hibernate DAO の動作に影響を与える可能性があります。
それはすべてインメモリ H2 データベースにあります..
行を追加した後
できます ...
だから、問題は Hibernate の の実装だったと思いますがList
、それが動作にどのように影響するのでしょうか??
java - Maven- Pom.xml プロパティが unitils 構成ファイルで認識されない
プロジェクトのテストに使用するために、データベース構成を pom.xml ファイルに含めました。データベース統合に unitils を使用しています 私の pom.xml プロパティは
私の unitils 設定は次のとおりです。
テストを実行すると、次のエラーが発生します。
ネストされた例外の開始
スタックトレース:
私はmavenのプロパティが伝播されていないと思うので、unitilsはそれらを認識しません。
spring - java.lang.IllegalStateException: 利用可能なモックの最後の呼び出しがありません
こんにちは、unitils を使用して単体テストを行っていますが、常にこの例外が発生します。
私のプロジェクト;
- BlogspotTest
-- src
---hibernate.cfg.xml
-- test
---package.service.test
----BaseServiceTest
----BlogspotServiceTest
-- web
---WEB-INF
----blogspot-servlet -test.xml
----jdbc-test.xml
これが私のBaseServiceTestです
これが私のBlogspotServiceTestです
何か足りない?私を正しい道に導いてください。tnx
blogspot-service-test.xml 内
jdbc-test.properties が必要だとは思いませんが、ここでの要件を完了するために、
アップデート :
私の研究中に私はこれを見つけました、
テストを作成する際のちょっとしたアドバイスとして、 「expect」メソッドは 、final のメソッドで例外をスローする傾向がある場合に例外をスローするということです。 これにより、「利用可能なモックの最後の呼び出しがありません」というメッセージとともにIllegalStateException が発生する可能性があります。 これは基本的に、「この呼び出しをモックできなかったのに、 とにかくモックを作ってほしい!」という意味です。 少し戻って、既存のクラスをモックするために、この EasyMock クラス拡張がどのように機能するか考えてみてください。 あなたならどうしますか?はい、 このクラスを拡張し、メソッドをオーバーライドします! それが EasyMock Class Extension の機能です。 では、メソッドを finalにするとどうなるでしょうか。あなたはそれを上書きすることはできません! もしあれば EasyMock クラス拡張からの IllegalStateException 。「最終」とマークされている場合、「期待」(オーバーライド) する傾向があるメソッドを確認してください。 「final」キーワードを削除すると、作業を続行できます。 -ステファン・ヘンドリックス
私は最終的なクラスを持っていません.リストされたjarファイルを使用しています:
easymock-2.3.jar
unitils-easymock-3.3.jar
easymockclassextension-2.3.jar
私のjarファイルを更新する必要がありますか?