問題タブ [springjunit4classrunner]
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.
spring-boot - spring-boot と testrail のテスト クラスで複数のランナー アノテーションを使用する
テストを testrail にリンクする必要があり、そのためには testrailrunner を使用する必要があります。ただし、springjunit ランナーを除外すると、サービスの開始時にテストが失敗し、両方のランナーを使用することはできません。
テストがサービス Bean で初期化され、テスト レールにログインできるようにするための回避策は何ですか?
spring - junit4テストで春のブート一時h2データベーステーブルが空
Spring Boot 1.2.5 を使用しており、JUnit4 のテストを行いたいと考えています。テストを含む Eclipse プロジェクトがあります。初期化中に、一時的な H2 データベースが作成されます。schema.xml と data.xml があります。初期化は問題ありませんが、後で 5 つのテーブルのうち 3 つが空です。
まず、Spring Boot でデータベースを作成しました。私の側からのコードはありません。リソースフォルダー内の XML だけです。これは問題なく実行されます。次に、テストで 5 つのテーブルのうち 3 つが空であることがわかりました。スキーマはまだ存在しますが、データはありません。
次に、H2 データベース/データソース Bean の手動作成に変更し、同じ方法ですべてのレコードが存在するかどうかを確認しました。これは、テスト結果に違いはありませんでした。作成直後に、データベースが期待どおりに入力されていることを示すことしかできませんでした。Bean の作成と JUnit テスト中に、いくつかのルーチンが 3 つの特定のテーブルを削除しているようです。
これは出力です:
後で JUnit テストが実行され、次の結果が得られます。
DataSource オブジェクトは同じように見えますが、レコード数が異なります。テスト中、最初の 3 つは空です。
テストは次のとおりです。
完全なコンソール出力は次のとおりです。
テーブルの作成には(例)を使用します:
私が使用するデータ挿入の場合:
この紛らわしい結果についてご協力いただきありがとうございます。
spring - ApplicationContextAware 実装 Bean から ApplicationContext にアクセスできないのはなぜですか
Spring JUnit テスター クラスがありMySimpleTester
ます。
@
... ... ...
私が持っているアダプタクラスでは:
... ... ...
私NullPointerException
はそれApplicationContext
がNull
ここにあることを理解しています。
ただし、SpringJUnitTestRunner
クラスMySimpleTester
では、applicationContext が正しく初期化されていることがわかりました。mySimpleConfig.xml
および インクルード ファイルは含めません。MyAdapter
アプリケーション サーバーで実行すると、クラス内のメソッドgetSimpleLinksList()
は Web アプリケーションから完全に正常に動作し、そこで appcontext が取得されます。
AppFactory
を介して静的に呼び出されるため、Spring テスターからのみ、静的アプリケーション コンテキスト クラスに到達できませんAppFactory.getPropertiesObj()
。他のテストクラスが実行されているため、クラスパスを正しく設定しました。
oracle - 自動化された JUnit テスト エラーが db コードで発生するが、手動で実行するとエラーになる
STS/Eclipse から実行すると機能する JUnit テストのスイートがありますが、Jacoco を使用して Bamboo から実行すると機能しません。Cobertura を使用して Jenkins からテストを実行していたとき、これは機能していました。私が仕事と言うとき、私はテストがエラーになっていることを意味します.それは特に私たちのSQLデータベース(Oracle)に触れるテストです. データベースに触れないテストにはエラーはありません。また、以前よりも優れた/高速なハードウェアを使用しているため、それが原因かもしれません. また、現在 Java 7 ではなく 8 を実行しています。しかし、前述したように、テストは STS/Eclipse から正常に実行されます。一度に多くのことを変更したので、何がこれを行っているのか少し途方に暮れています.
エラーは、具体的には「再帰 SQL レベル 1 ORA-01000 でエラーが発生しました。開いているカーソルの最大数を超えました」です。
Springsource Framework、ojdbc6、および ucp を使用しており、次のスタック トレースでエラーが発生します。
ちなみに、これはすべて呼び出しを試みたものです:
根本的な原因を突き止めたと思いますが、それを修正するための最良の方法はまだありません(アイデアは自由です)。
テストの各セットは、いくつかのカーソルを開きます。その一連のテストの実行が終了すると、Spring はカーソルのクリーンアップを開始します。しかしその後、次のクラスのテストが開始され、新しいカーソルが開かれ始めます。How to find Current open Cursors in Oracleというクエリを実行して、「開いているカーソル」の数が正弦波状に増加するのを見ていました 。どうやら私の古いハードウェアは非常に遅かったため、クリーンアップは成長よりも速く行われましたが、新しいものでは最終的に 300 の制限に達しました (そのため、チームの他の誰かがデフォルトの 50 が少なすぎることに気づきました。 300 がどのように正しいと判断されたかについてのドキュメントはありません)、そのエラーの後のすべてのテストはそのエラーで終了します。
私が軽減しようとしたこと: データベースに触れるすべてのテストに、10 秒間スリープする @AfterClass メソッドを持つ TouchesDatabase というスーパークラスを与えます。
これにより、実際には1つを除くすべてのテストが修正されましたが、ビルドに2倍の時間がかかりました.
明らかに、一部のテストでは他のカーソルよりも多くのカーソルが開かれているので、10 秒間実行する代わりに、開いているカーソルの数をクエリし、100 を超える場合はもう 1 秒間スリープします。残念ながら、私が使用しているカーソル クエリ (別のものを試す必要があるかもしれません) は、10 秒のフラット スリープよりも 100 カーソルを下回るのにさらに時間がかかるように見えるため、物事を過大評価しているか、奇妙なことをしているようです。私がその日に出発しなければならなかったとき、それは 3 番目または 4 番目の db テスト クラス (30 のうち) のように実行され、すでに 30 分間実行されていたので、朝に見てみますが、明らかに理想的ではありません。
カーソルに対するより適切なクエリが見つからない場合は、各テストの調査を開始して、よりスマートな方法があるかどうかを確認します。テストだけで、実稼働アプリケーションに問題はありませんでした。
java - @PostConstuct の前にテストデータを入力する方法は?
最初に実行することの 1 つとして TCP サーバーを実行する必要があるアプリケーションに取り組んでいます。これは現在、Spring 構成クラスを介して開始されます。
既存の事前入力されたデータベースを使用する場合は正常に動作しますが、統合テストを作成しようとすると問題が発生します: データを事前に入力する必要がありますが@PostConstruct
、JUnit@Before
メソッドであり、 SpringJUnit4ClassRunner を使用する場合も同様@TestExecutionListeners
です。
私が今考えることができる唯一の解決策は、テスト構成クラスのデータを で初期化し、@PostConstruct
これが最初にロードされるようにすることですが、これは少し汚いようです。編集: 試してみましたが、これは BeanCurrentlyInCreationException で失敗しました - EntityManagerFactory の依存性注入が完了していないようです。
よりエレガントな方法はありますか (たとえば、Spring によって管理されていない別の場所で TCP サーバーを実行する必要があります)。
java - テストケースクラスで@Mockを注入しないSpringデータリポジトリはnullを返しますか?
リポジトリ オブジェクトがテストケース クラスに挿入されません。これが私の以下のテストクラスコードです
「EmployeeRepository」を挿入する方法を教えてください。追加のロジックを記述する必要があります。
java - モックされたリポジトリ オブジェクトは、コントローラーのテストケースから空の結果を返しますか?
コントローラーのテストケースからモックされていないリポジトリ オブジェクトは、空のオブジェクトを返します。ここでは、以下のコードを示します。
employeeServiceImpl で findByName("mike") を呼び出すためのリポジトリ呼び出しがあるので、データベースにアクセスしたくありません。
このテスト ケースを実行すると、EmployeeController メソッドが呼び出され、このサービス メソッドの EmployeeService メソッドの呼び出しよりも EmployeeCompositeService メソッドの呼び出しになります。
このコントローラー テスト メソッドでモックされた呼び出しを呼び出すリポジトリ呼び出しがあります。デバッグすると、空のリストが返されます。コントローラーのテストケースで間違っていたこと。よろしくお願いします。
java - SpringJUnit4ClassRunner のタイプのすべての Bean を取得します
次のテストクラスに適した答えを見つけるのに問題があります。
タイプcontext
services.xml
がService
.
このようなものがあるに違いないと確信していますが、何を検索する必要があるのか わかりません。
どうもありがとうございました。
ステファン