をautowired
とすることができるクラスに書くとしましょう。したがって、application context
をロードする必要があります。ベンチマークでアノテーションを使用してアプリケーションコンテキストを読み込む
私のテストは、注釈@org.openjdk.jmh.annotations.State(Scope.Benchmark)
とmainメソッド
public static void main(String[] args) throws RunnerException {
Options opt = new OptionsBuilder()
.include(MyBenchmark.class.getSimpleName())
.forks(1)
.build();
new Runner(opt).run();
}
を持っており、もちろん、私はこのようないくつかのベンチマークを持っている:今
@Benchmark
public void countAllObjects() {
Assert.assertEquals(OBJECT_COUNT, myAutowiredService.count());
}
、質問は私がmyAutowiredService
を注入んかのですか?
解決策手動
ロード@Setup
方法で文脈。
ApplicationContext context = new ClassPathXmlApplicationContext("META-INF/application-context.xml");
context.getAutowireCapableBeanFactory().autowireBean(this);
しかし、私はこの解決策が嫌いです。私は私のテストは、ちょうど注釈
@ContextConfiguration(locations = { "classpath:META-INF/application-context.xml" })
を持っているし、私はちょうど
@Autowired
private MyAutowiredService myAutowiredService;
のように私のBeanを注入したが、これは動作しないことを好むだろう。私はまた、このように、任意の@Test
注釈付きメソッドを持っていないため、これを行うのはポイントがありませんしかし
@RunWith(SpringJUnit4ClassRunner.class)
:理由は、私が想定し、私は私のテストは、春に実行する必要があります何注釈を持っていないということです私はNo runnable methods
例外を得るでしょう。
この場合、アノテーションでコンテキストを読み込むことはできますか?
を私はまだ、XMLベースの設定がありますが、私は1日、私は、アノテーションベースのバージョンに移行することを推測します。だから、あなたの答えに基づいて、それは注釈で行うことは不可能だと思われます、それは正しいのですか? – Rufi
これはテストしていませんが、AnnotationConfigWebApplicationContextのアプローチは、MyBenchmarkクラスにxmlファイルを指す@ContextConfigurationを使用して注釈を付けると機能します。 –