問題タブ [spring-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.
java - Qualifier Annotation に基づいて Bean をプログラムで Autowire する方法
Junit5 では、Extensions を使用すると、BeforeAll メソッドと AfterAll メソッドを実行できます。また、Annotations を使用してテストの動作を変更しようとしています。ただし、これらの注釈を @Qualifiers としても Bean の初期化に使用しており、テストで識別された注釈を使用して Bean を初期化できるようにしたいと考えています。
SpringExtension
Junit5 で取得できることがわかっている修飾子アノテーションを使用して、実行時にプログラムで Bean を初期化したい
これを使用して Bean 初期化ファクトリーを呼び出すことができますが、修飾子である注釈を使用して Bean を初期化する方法がわかりません。修飾子によって識別される同じタイプの複数の Bean があります。
私が立ち往生している問題は
現在、AutoWired を使用して Type of user credentials を静的に初期化してから、スイッチケースを使用して事前に初期化された UserCredential を使用している注釈に基づいています。
アイデアは、テスト クラス@ExtendsWith(ResetPortal.class)
を用意し、リセット (テスト前のログイン) に使用できるユーザーのタイプを示すことです。Qualifier Annotations を使用してそれを示しています。これはExtensionContext
、Junit5beforeAll
メソッドから抽出できます。
さらに、UserCredential
ユーザーのタイプごとに 1 つのクラスとそのクラスの複数の @Bean 定義があります。
コード
カスタム修飾子アノテーション User1Qualifier を使用した Bean 定義
私のカスタム修飾子は以下のとおりです(複数あります)
現在、テストでは、ResetPortal が取得する同じ注釈を使用しようとしています。
Junit5 がクラスを初期化し、そのマネージド インスタンスを呼び出すため、ResetPortal クラスは Autowired 要素を個別に定義する必要があります。
java - restclienttest を使用して resttemplate 呼び出しをモックできない
RestTemplate
which usesをモックしたいRestTemplateBuilder
。したがって、私は使用してrestclienttest
います。
残念ながら、私はresttemplate
呼び出しをモックすることはできません。がSup supExpected = myService.getDetails("1234")
呼び出されると、代わりに完全なバックエンド呼び出しが実行され、私が要求した結果が得られます。
カスタム json 文字列「SD」を生成する代わりに、実際の GET 呼び出しを実行し、バックエンドから応答を返します。
これが私のjunitコードです:
私のコードの何が問題なのか、誰か助けてもらえますか?