在测试过程中将@Value设置为来自application-test.properties的服务,而无需进行反思

时间:2018-07-09 10:14:20

标签: unit-testing spring-boot

在我的Spring Boot应用程序中,我有一个从环境变量读取URL的服务。

@Service
@RequiredArgsConstructor
class CategoryService {
    @Value("${MY_URL}")
    private String url;

    private final RestTemplate restTemplate;

    // .......
}

我要创建一个单元测试,并且必须从application-test.properties中的\test\resources文件中获取URL。像这样在application-test.properties声明变量

MY_URL=https://my.url

运行测试时,我发现服务中的url变量为null

@RunWith(SpringJUnit4ClassRunner.class)
@TestPropertySource("classpath:application-test.properties")
public class CategoryServiceTest {

    @InjectMocks
    private CategoryService categoryService;

    @Test
    public void myTest() {
        categoryService.callSomeMethod();
        // HERE I SEE THAT  MY_URL is null
    }
}

有人可以向我解释我所缺少的东西吗?是否可以反射地设置它?

0 个答案:

没有答案