1. ホーム
  2. spring

[解決済み] MockitoでSpringの自動配線された@Valueフィールドをモックするにはどうすればよいですか?

2022-04-20 03:37:17

質問

Spring 3.1.4.RELEASEとMockito 1.9.5を使用しています。 私のSpringクラスで私は持っています。

@Value("#{myProps['default.url']}")
private String defaultUrl;

@Value("#{myProps['default.password']}")
private String defaultrPassword;

// ...

私のJUnitテストから、現在このように設定されています。

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration({ "classpath:test-context.xml" })
public class MyTest 
{ 

私は "defaultUrl" フィールドの値をモック化したいと思います。 他のフィールドはそのままにして、"defaultUrl"フィールドだけモック値にしたいのです。 また、私は明示的な "setter" メソッドを持っていないことにも注意してください (例えば setDefaultUrl また、テストのためだけにクラスを作成することもありません。

そうすると、その1つのフィールドの値をモック化するにはどうしたらいいでしょうか?

どのように解決するのですか?

Springの魔法を使えば ReflectionTestUtils.setField を使用することで、コードに一切修正を加える必要がありません。

のコメントは ミハエル・ストークマール がその例です。

使用 ReflectionTestUtils.setField(bean, "fieldName", "value"); を起動する前に bean メソッドをテストすることができます。

チェックアウト これ チュートリアルでさらに詳しい情報が得られますが、この方法はとても簡単なので、おそらく必要ないでしょう。

アップデイト

Spring 4.2.RC1の導入以降、クラスのインスタンスを提供しなくても静的フィールドを設定することが可能になりました。以下を参照してください。 これ の部分と これ コミットします。