次はテストクラスのクラスコードです。テスト・インスタンスにスプリングブートテストでテストクラスの静的ネストされた@Namedコンポーネントが検出されない
@SpringBootTest(classes = { SpringBootApp.class }, webEnvironment = WebEnvironment.RANDOM_PORT)
public class OuterBeanTest {
@Inject
InnerBeanTest innerBean;
@Test
public void test() {
assertThat(this.innerBean.print()).isEqualTo("print");
}
@Named
static class InnerBeanTest {
String print(){
return "print";
}
};
}
しかし、静的クラスの注入についてUnsatisfied dependency expressed through field 'innerBean'; expected at least 1 bean which qualifies as autowire candidate.
私はテストインスタンスに注入することができますどのようにエラーがスローされますか?春ブートアプリケーションがsrc/main/java
SpringBootApp.java
package com;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class SpringBootApp {
public static void main(String[] args) {
SpringApplication.run(SpringBootApp.class, args);
}
}
NOTEにcom
パッケージであるのに対し、
EDIT
OuterBeanTest.java
は、src/test/java
にcom.general
パッケージである:同じことが今Spring-4.2.8
を働いたが、私Spring-4.3.7
にアップグレードしましたそれは動作を停止しました。
'インナー静的' という点で矛盾です。 JLS#8.1.3を参照してください。これは静的クラスです。 – EJP
@EJPは明白であり、私はその違いを知っています。 –
いくつかの関連情報がありません:「OuterBeanTest」はどのパッケージですか? 'SpringBootApp'はどのパッケージに入っていますか? 'SpringBootApp'にはどのような注釈がありますか? –