2017-01-16 23 views
1

私はすでによく似た質問でチェックしてあり、役に立つ回答を見つけることができませんでした。テスト中にメッセージソースが正しく読み取られない

Maven v3.3.9を使用してJHipster経由でWebアプリケーションを作成しています。とりわけ、PDF生成が行われています。 Webアプリケーションは、多言語であり、異なる翻訳に

/リソース/国際化/ ..

リソースファイルを使用しています。ライブテストでは、問題やエラーなしですべてが完璧に動作します。

私は現在、PDFを生成して既存のPDFと比較するテストを作成しようとしており、開発を続けることができます。私は、エラーの原因が何であるかわからない

org.springframeworkcontext.NoSuchMessageException: No message found under code 'pdf.klasse' for locale 'de'

:問題は、私がテストに使用ロケールに関係なく、私は同じエラーを取得し、です。メッセージはライブテスト中に存在するため、完全に動作します。

@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 追加します。configへ

@PropertySource("classpath:/src/main/resources/i18n/messages_de.properties") 

はあまりしませんでした。私はまた、

Locale locale = Locale.GERMAN; 

String locale = "de" 

からロケールを変更して、私はラインで投げた:

System.out.println(messageSource.getMessage("pdf.klasse", null, this.locale)); 

直接テストの初めに。私は同じエラーが発生します。それは問題をファイルを見つけることではなく、それを読むことにあるようだ。お使いの設定で

+0

です。 –

答えて

1

は、次のものが必要です。

@Bean 
public ResourceBundleMessageSource messageSource() { 
    ResourceBundleMessageSource source = new ResourceBundleMessageSource(); 
    source.setBasenames("i18n/messages"); 
    return source; 
} 

私のテストでは、これはpdfboxに関するものではありませんpdfboxラベルを削除してください

@RunWith(SpringRunner.class) 
@SpringBootTest(classes = Application.class) 
public class Test1 { 

    @Autowired 
    private MessageSource messageSource; 

    @Test 
    public void test1() { 
     assertNotNull(messageSource); 
     assertEquals("test greg de", messageSource.getMessage("pdf.klasse", null, Locale.GERMANY)); 
    } 
} 
+0

クイック返信の相手に感謝します。私はテストに設定を追加したが役に立たなかった。私はファイルが(/ src/test/resourceと/ src/main/resourceの両方にあるので)ファイルを見つけることに問題はないと思いますが、ロケールのような感じです何らかの理由で「間違っている」と読み込まれています...私はすべての可能な解決策を試しており、答えを見つけたら直ちに更新すると信じています。 –

+1

私の答えはテストで更新されました。現在は動作しています –

+0

ありがとうございました。それは空のmessageSource(DelegatedMessageSource)を作成していたため、NotNullテストがtrueを返し続けたのです。しかし、オブジェクトそのものは空であり、パスはありませんでした。 BeanをApplication.javaに追加すると、完全に機能しました。 :)乾杯 –

関連する問題