我有几个属性在服务类如下。我可以从www.example.com文件中填充它们application.properties。
我的application.properties文件是这样的,它的值与application-test.properties文件相同:
server.port=8282
short.url.domain=gnl.co
字符串
application.properties在src/main/resources中,application-test.properties在src/test/resources中。
我的服务类是这样的:
@Service
public class ShortURLService {
@Value("${short.url.domain}")
private String shortUrlDomain;
@Value("${server.port}")
private String shortUrlPort;
.....
}
型
我有一个这样的测试类:
@SpringBootTest
@TestPropertySource(locations = "classpath:application-test.properties")
@ContextConfiguration(classes = ShortURLService.class)
public class ShortURLServiceTest {
@InjectMocks
private ShortURLService shortURLService;
@Test
public void testShortenURL() {
String shortUrl = shortURLService.shortenURL("http://ilkaygunel.com");
assertTrue(shortUrl.contains("gnl.co/"));
}
}
型
我检查了来自application-test.properties文件的值进入ShortURLServiceTest类,但ShortURLService中的值为null。
如何使用application-test.properties文件填充服务类中的变量?
1条答案
按热度按时间kmbjn2e31#
因为
@InjectMocks
是Mockito的东西,它对Spring一无所知,所以它不理解@Value
是什么,也不会向它注入值。您必须使用
@Autowired
将实际的ShortURLService
bean从spring上下文注入到测试中。因此,更改为以下内容应该可以解决您的问题:
字符串