2017-02-22 10 views
1

Ich möchte einen Integrationstest erstellen, in dem Spring Boot einen Wert aus der Datei .properties unter Verwendung von @Value Annotation liest.
Aber jedes Mal, wenn ich renne Test meiner Behauptung fehlschlägt, weil Frühling nicht in der Lage ist, den Wert zu lesen:Spring Boot-Integrationstests liest keine Eigenschaftendateien

org.junit.ComparisonFailure: 
Expected :works! 
Actual :${test} 

Mein Test:

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration(classes = {WebTests.ConfigurationClass.class, WebTests.ClassToTest.class}) 
public class WebTests { 
    @Configuration 
    @ActiveProfiles("test") 
    static class ConfigurationClass {} 

    @Component 
    static class ClassToTest{ 
     @Value("${test}") 
     private String test; 
    } 

    @Autowired 
    private ClassToTest config; 

    @Test 
    public void testTransferService() { 
     Assert.assertEquals(config.test, "works!"); 
    } 
} 

application-test.properties unter src/main/Ressourcen Paket enthält:

test=works! 

Was kann der Grund für dieses Verhalten sein und wie kann ich es beheben?
Jede Hilfe sehr geschätzt.

+1

Wie sieht 'ClassToTest' aus? Hast du '@ SpringBootTest' irgendwo? Es würde vermuten, dass Ihre Tests nicht als Spring-Boot-Test ausgeführt werden, sodass die Anwendungseigenschaften nicht geladen werden. Wenn dies der Fall wäre, hätte das Setzen des aktiven Profils auf "test" ausreichen müssen, damit "application-test.properties" geladen werden kann –

Antwort

2

Sie sollten die application-test.properties laden mit @PropertySource oder @TestPropertySource

@RunWith(SpringJUnit4ClassRunner.class) 
@TestPropertySource(locations="classpath:application-test.properties") 
@ContextConfiguration(classes = {WebTests.ConfigurationClass.class, WebTests.ClassToTest.class}) 
public class WebTests { 

} 

für weitere Informationen: Schauen Sie in dieser Override default Spring-Boot application.properties settings in Junit Test

0

Neben dem oben markiert richtige Antwort gibt es eine andere Art Art und Weise um application-test.properties zu laden: Setzen Sie Ihren Testlauf "profile" auf "test".

Markieren Sie Ihre Testfälle mit:

@ActiveProfiles("test") 
@RunWith(SpringJUnit4ClassRunner.class) 

application-xxxx.properties ist eine Namenskonvention für Eigenschaften verschiedener „Profil“.

"Profil" ist auch in Bean-Konfiguration nützlich.

Verwandte Themen