我做错了什么?我正在使用这个小型独立应用程序,它运行并查找我的src/main/Resources/config/application.yml
。相同的配置在JUnit中不起作用,请参阅下面:
@Configuration
@ComponentScan
@EnableConfigurationProperties
public class TestApplication {
public static void main(String[] args) {
SpringApplication.run(TestApplication.class);
}
}
@Component
@ConfigurationProperties
public class Bean{
...
}
以下不起作用,application.yml
中的相同属性未加载并且Bean
只有null
值:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = TestApplication.class)
public class SomeTestClass {
...
}
2017年2月的替代方案:
@SpringBootTest
@ContextConfiguration(classes = { TestApplication.class })
@RunWith(SpringRunner.class)
public class SomeTestClass {
...
}
精益变体(无SpringBootTest):
@ContextConfiguration(classes = { TestApplication.class },
initializers = { ConfigFileApplicationContextInitializer.class })
@RunWith(SpringRunner.class)
public class SomeTestClass {
使用@SpringBootTest
在SpringBoot 2.0 w/o中加载任何自定义yml文件的技巧
示例代码:
@RunWith(SpringRunner.class)
@ContextConfiguration(
classes = { MyConfiguration.class, AnotherDependancy.class },
initializers = {ConfigFileApplicationContextInitializer.class} )
@TestPropertySource(properties = { "spring.config.location=classpath:myApp-test.yml" })
public class ConfigProviderTest {
@Autowired
private MyConfiguration myConfiguration; //this will be filled with myApp-test.yml
@Value("${my.config-yml-string}")
private String someSrting; //will get value from the yml file.
}
对于JUnit 5,请使用@ExtenTo(SpringExtension.class)
注释而不是@RunTo(SpringRunner.class)
试试这个:
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = TestApplication.class,
initializers = ConfigFileApplicationContextInitializer.class)
public class SomeTestClass {
...
}
编辑:
对于Spring Boot 1.5版,删除了SpringApplicationConfiguration
,以支持SpringBootTest
或直接使用SpringBootContextLoader
。
您仍然可以使用带有注释的初始化器参数。
我正在使用一个spring启动应用程序,它运行我的src/main/resources/config/application。yml。 当我通过以下方式运行测试用例时: 测试代码仍在运行我的应用程序。要加载属性的yml文件。我想知道是否有可能再运行一个*。运行测试用例时的yml文件。
我有类应用程序运行正常,当你运行它作为Spring启动应用程序和加载属性从src/main/Resources/application.yml如下 以下是application.yml详情 但是,当您尝试对上述类abc运行junit测试时,它不会从src/main/resources/application.yml上传属性。甚至我也创建了一个测试文件应用程序。测试目录下的yml
我在下有一个测试属性文件。但是我无法在我的单元测试中获取要加载的值。我有以下类: 在生产代码中,加载来自src/main/resources/application的值。yml。 单元测试等级: 我试图为每个应用程序添加一个测试配置文件。yml文件,看看添加ActiveProfiles(“test”)是否有效,但没有。 src/main/resources/application。yml公司 我还
我正在学习JUnit5和测试用例。我使用的是spring boot version'2.2.6.Release和JUnit5,在我的应用程序中,我有一个基于属性文件中的布尔标志进行处理的方法。 \src\main\resources\application.properties 数据库连接属性用于创建数据库连接 ControllerTest.java 默认情况下,该标志为false,因此每次测试用
我有不同属性的application.yml如下所示。 我使用@ConfigurationProperties将这些属性绑定到Spring组件 我将在Spring Boot控制器中注入此组件,并将此配置绑定到get-configsendpoint/控制器/配置 调用此endpoint时,期望返回 而是返回如下所示的响应 yml中的列表正在映射到Map中的对象。我们如何实现对各自数据类型的正确绑定?
我有从应用程序访问属性的方法。属性 下面是测试用例: 当我访问该方法它的抛空指针。我已经声明该属性在application-test.yml。我缺少什么?任何参考或答案来解决这个问题?