У меня есть следующий класс, который мне нужно протестировать с помощью Junits
@Service
public class MyStorageService {
private final Path fileStorageLocation;
@Autowired
public MyStorageService(FileStorageProperties fileStorageProperties) {
fileStorageLocation = Paths.get(fileStorageProperties.getUploadDir()).toAbsolutePath().normalize();
try {
Files.createDirectories(this.fileStorageLocation);
} catch (Exception ex) {
logger.error("An Internal error occurred when creating directories: {}", ex);
throw new FileStorageException("An Internal error occurred when creating directories", ex);
}
}
public String storeFile(String destination, MultipartFile file) {
//Does some copy and storage operations on file system//
}
}
У меня есть зависимый компонент FileStorageProperties, как указано ниже, который читает application.properties из папки ресурсов, чтобы получить root путь к каталогу:
@ConfigurationProperties(prefix = "file")
public class FileStorageProperties {
private String uploadDir;
public String getUploadDir() {
return uploadDir;
}
public void setUploadDir(String uploadDir) {
this.uploadDir = uploadDir;
}
}
У меня есть пример Junit, который я пытаюсь завершить
@RunWith(SpringRunner.class)
@TestPropertySource(locations = "classpath:test.properties")
@SpringBootTest(classes = {MyStorageServiceTests.TestConfiguration.class})
public class MyStorageServiceTests {
@MockBean
private FileStorageProperties fileStorageProperties;
@InjectMocks
private MyStorageService fileStorageService = new MyStorageService(fileStorageProperties);
@Test
public void testFileLocationCreation() {
//assert file created logic and storeFile method logic//
}
@EnableConfigurationProperties(FileStorageProperties.class)
public static class TestConfiguration {
// nothing
}
}
Мне нужно найти правильный способ настройки моего testClass, не хочу лог c для модульного теста. Когда я пытаюсь внедрить fileStorageProperties в конструктор MyStorageService, он становится пустым. Что вызовет java .lang.NullPointerException везде, где используется fileStorageProperties. Я новичок в java (всего 1 месяц опыта). Любое понимание будет полезно. ИСПОЛЬЗОВАНИЕ java 1.8 и SpringJUnit4