私は春のブートアプリケーションを持っています。私はJunitテストを書いています。 私はapp.properties(src/main/resources/application.propertiesで定義されています)とAppConfig(src/main/java/hello/AppConfig.java)で設定されたStatus Beanから値を注入しようとしています。私は、Beanがautowired(デバッガを介してnullではない)が値が設定されていないことがわかります。ここでspringブートアプリケーションのJunitテストでappliction.propertiesのプロパティが利用できないのはなぜですか?
はapplication.properties
のsrc /メイン/リソース/ application.propertie秒
app.name=rest-service
app.version=1.0.0-SNAPSHOT
のsrc /メイン/ javaの/ハロー/ AppConfig.java
@Configuration
public class AppConfig {
@Value("${app.version}")
private String version;
@Value("${app.name}")
private String name;
@Bean
public Status status(){
return new Status(name,version);
}
}
です
//ステータスは名前とバージョンのフィールドを持つ単純なpojoです
SRC /試験/ジャワ/ハロー/ GreetingControllerTests.java
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = Application.class)
@ContextConfiguration(classes={hello.TestConfig.class,hello.AppConfig.class})
@WebAppConfiguration
public class GreetingControllerTests {
@Autowired
Environment envi;
@Autowired
Status status;
@Value("${app.name:notConfigured}")
String appName;
private String env;
@Before
public void init(){
System.out.println(status.getName());
System.out.println(appName);
env=envi.getActiveProfiles()[0];
}
@Test
public void should_fail(){
if (env.equalsIgnoreCase("DEV")){
assertThat(false).isFalse();
}
if (env.equalsIgnoreCase("QA1")){
System.out.println("failing the test");
fail();
}
}
}
Iはinitメソッドにデバッガを設定し、正しい値が設定された両方appName
とstatus
Beanが注入されないことを見出しました。ステータスBeanは注入されます。値は設定されません。
あなたの 'Application'クラスはどのように見えますか? –
application.propertiesに配置されていない文字があります。 'app。バージョン 'には' = ' –
@ShawnClarkがありません。ここでコードをチェックアウトすることができます。 https://bitbucket.org/SpringDevSeattle/gs-rest-service –