Я уже проверил с большинством подобных вопросов и не нашел полезного ответа.MessageSource не читается правильно во время тестирования
Я делаю WebApplication через JHipster, используя Maven v3.3.9. Среди прочего, есть PDF-генерация, которая имеет место. Веб-приложение является многоязычным и использует
/ресурсы/i18n/..
ресурсные файлы для различного перевода. В реальном тестировании все работает отлично, без проблем и ошибок.
Теперь я пытаюсь создать тест, который будет генерировать PDF-файл, и сравнить его с существующим PDF-файлом, чтобы разработка продолжалась. Проблема заключается в том, независимо от того, локаль я использую для тестирования, я получаю ту же ошибку:
Я не уверен, что причина ошибки. Поскольку сообщения есть, и во время живых тестов они работают отлично.
Вот код теста:
@RunWith(SpringRunner.class)
@SpringBootTest(classes = DeviceDataCheckApp.class)
public class PDFGeneratorTest
{
private MockMvc mockMvc;
private CalculationMapperImpl calculationMapperImpl;
private Calculation calculation;
private CalculationDTO calculationDTO;
private CalculationResult calculationResult;
private String langval = "de";
private String name = "";
private PDFGenerator pdfGenerator;
@Autowired
private MessageSource messageSource;
@Autowired
private WebApplicationContext webApplicationContext;
@Before
public void setup() throws IOException, URISyntaxException, IllegalAccessException, InstantiationException
{
mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build();
calculation = new Calculation()
.producerName("test")
.airVolumeSupply(2.0)
.airVolumeExhaust(2.0)
.statedAirVelocitySupply(2.0)
.statedAirVelocityExhaust(2.0)
.staticPressureLossSupply(2.0)
.staticPressureLossExhaust(2.0)
.pMSupply(2.0)
.pMExhaust(2.0)
.pMAnfSupply(2.0)
.pMAnfExhaust(2.0)
.pressureLossWrgSupply(2.0)
.pressureLossWrgExhaust(2.0)
.pressureLossMediumSupply(2.0)
.pressureLossMediumExhaust(2.0)
.enginePowerRotor(0.0)
.dryThermalPerformance(0.0)
.ofHeatRecovery(2.0)
.wrgType(WrgType.PLATTENTAUSCHER)
.earlyPressureLossFilterSupply(2.0)
.earlyPressureLossFilterExhaust(2.0)
.dimensioningPressureLossFilterSupply(2.0)
.dimensioningPressureLossFilterExchaust(2.0)
.referenceConfigurationFilterSupply(false)
.referenceConfigurationFilterExhaust(false)
.additionalFilterStageSupply(false)
.additionalFilterStageExhaust(false)
.hepaFilterSupply(false)
.hepaFilterExhaust(false)
.gasFilterSupply(false)
.gasFilterExhaust(false)
.highPerformanceCondenserSupply(false)
.highPerformanceCondenserExhaust(false)
.heightInnerDimensionSupply(2.0)
.heightInnerDimensionExhaust(2.0)
.depthInnerDimensionSupply(2.0)
.depthInnerDimensionExhaust(2.0);
calculationMapperImpl = new CalculationMapperImpl();
calculationDTO = calculationMapperImpl.calculationToCalculationDTO(calculation);
calculationResult = new CalculationResult();
calculationResult.setRealAreaSA(0.00);
calculationResult.setRealAreaEA(0.00);
calculationResult.setRealAirVelocitySA(138.89);
calculationResult.setRealAirVelocityEA(138.89);
calculationResult.setCheckedVClassSA("V9");
calculationResult.setCheckedVClassEA("V9");
calculationResult.setDeclaredVClassSA("V4");
calculationResult.setDeclaredVClassEA("V4");
calculationResult.setpMRefSA(0.00);
calculationResult.setpMRefEA(0.00);
calculationResult.setpMMaxSA(0.00);
calculationResult.setpMMaxEA(0.00);
calculationResult.setpClassSA("-");
calculationResult.setpClassEA("-");
calculationResult.setPressureLossWrg(4);
calculationResult.setPressureLossMedium(0);
calculationResult.setRatedAirVolume(2);
calculationResult.setDryThermalPower(0.00);
calculationResult.setAuxiliaryPower(0.00);
calculationResult.setElectricalPowerInput(0.00);
calculationResult.setPerformanceReferenceNumber(72.29);
calculationResult.setEfficiency(1.97);
calculationResult.sethClass("H6");
calculationResult.setpSfpVSA(3600000.00);
calculationResult.setpSfpVEA(3600000.00);
calculationResult.setExtraPSfpSA(0);
calculationResult.setExtraPSfpEA(0);
calculationResult.setSfpVClassSA("SFP7");
calculationResult.setSfpVClassEA("SFP7");
calculationResult.setSystemEfficiencySA(0.00);
calculationResult.setSystemEfficiencyEA(0.00);
calculationResult.setInternalPressureLossSA(2);
calculationResult.setInternalPressureLossEA(2);
calculationResult.setInternalPressureLossTotal(4);
calculationResult.setSfpIntSA(3600000);
calculationResult.setSfpIntEA(3600000);
calculationResult.setSfpIntTotal(7200000);
calculationResult.seteBonus2016(0);
calculationResult.seteBonus2018(0);
calculationResult.setfCorrection2016(360);
calculationResult.setfCorrection2018(340);
calculationResult.setSfpMax2016(840);
calculationResult.setSfpMax2018(760);
calculationResult.setAchieved2016(false);
calculationResult.setAchieved2018(false);
pdfGenerator = new PDFGenerator(calculationDTO, calculationResult, langval, messageSource, name);
}
@Test
public void compareFilesTest() throws IOException
{
System.out.println(calculation);
File f1 = new File("../PDFData/testPDF.pdf");
File f2 = new File("../PDFData/testPDF2.pdf");
boolean areSame = FileUtils.contentEquals(f1, f2);
System.out.println("Files were compared...");
assertTrue(areSame);
}
}
PDFGenerator создает файл testPDF2.pdf и сохраняет его.
UPDATE Добавление:
@PropertySource("classpath:/src/main/resources/i18n/messages_de.properties")
в конфигурации не делать. Я также изменил локаль из
String locale = "de"
в
Locale locale = Locale.GERMAN;
и я бросил в линию:
System.out.println(messageSource.getMessage("pdf.klasse", null, this.locale));
непосредственно в начале теста. Я получаю ту же ошибку. Кажется, проблема заключается не в поиске файла, а в его чтении.
Пожалуйста, удалите этикетку pdfbox, это не про pdfbox. –