Как установить и ввести свойство Value из Test in Junit - PullRequest
0 голосов
/ 08 мая 2019

Мой класс обслуживания использует свойство, установленное для него application.properties

@Service
public class Service {
    @Value("${my.prop}")
    private String prop;        
    public Response doWork(String param1,String param2){
       System.out.println(prop);    //NULL!!! 
    }   
}

Я хочу проверить его и установить собственное значение:

Класс тестирования:

@RunWith(MockitoJUnitRunner.class)
@TestPropertySource(locations = "application.properties",properties = { "my.prop=boo" })
public class ServiceUnitTest {   
    @InjectMocks
    private Service service;    

    @Test
    public void fooTest(){      
        Response re = service.doWork("boo", "foo");
    }
}

Но когда я запускаю тест, значение равно нулю (даже не значению, которое существует в application.properties).

1 Ответ

0 голосов
/ 08 мая 2019

У меня нет опыта работы с MockitoJUnitRunner, но я могу добиться этого с помощью PowerMockRunner.

Настройте контекст приложения с помощью тестовой конфигурации и автоматически подключите bean-компонент из контекста вашего приложения в ваш тестовый класс. Вам также не нужен бит "location =" в аннотации @TestPropertySource.

@RunWith(PowerMockRunner.class)
@PowerMockRunnerDelegate(SpringRunner.class)
@TestPropertySource(properties = { "my.prop=boo" })
public class ServiceUnitTest {   

    @TestConfiguration
    static class ServiceUnitTestConfig {
        @Bean
        public Service service() {
            return new Service();
        }
    }

    @Autowired
    Service service;

    @Test
    public void fooTest(){      
        Response re = service.doWork("boo", "foo");
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...