JUnit application.properties始终返回null

时间:2019-12-20 15:52:59

标签: java spring-boot junit5

我正在尝试为@Service带注释的类编写单元测试。我设置了application.properties文件和一个用于访问值的类。

@Component
@ConfigurationProperties
@PropertySource("classpath:application.properties")
public class ApplicationProperties {
    private String first_name;
    private String last_name;
    private String base_url;

    public String getFirst_name() {
        return first_name;
    }

    public void setFirst_name(String firstName) {
        this.first_name = firstName;
    }

    public String getLast_name() {
        return last_name;
    }

    public void setFirst_name(String lastName) {
        this.last_name = lastName;
    }

    public String getBase_url() {
        return base_url;
    }

    public void setBase_url(String baseUrl) {
        this.base_url = baseUrl;
    }
}

我写的测试就是这样

@RunWith(SpringRunner.class)
@ContextConfiguration(classes = { ApplicationProperties.class })
@TestPropertySource(locations="classpath:application.properties")
public class ServiceTests {
    @Autowired
    private ApplicationProperties applicationProperties;

    @Before
    private void initializeConfig() {
        Mockito.when(applicationProperties.getFirst_name()).thenReturn("Karan");
    }

    @Test
    public void sample_Test() {
        MyService myService = new MyService();

        String fName = myService.getUserFirstName();

        assertEquals(fName, "Karan");
    }
}

和方法myService.getUserFirstName就是这样

@Service
public class MyService {
    @Autowired
    private ApplicationProperties applicationProperties;

    public String getUserFirstName() {
        return applicationProperties.getFirst_name();
    }
}

我尝试了以下tutorialthisthisthis堆栈溢出问题中提供的方法。但是它总是在getUserFirstName方法中将applicationProperties对象设置为null,并引发null值异常。

任何建议我做错了。

enter image description here

0 个答案:

没有答案