Nelle nostre applicazioni Web Spring, utilizziamo i profili bean Spring per differenziare tre scenari: sviluppo, integrazione e produzione. Li usiamo per connetterci a diversi database o impostare altre costanti.Test di integrazione della molla con profilo
L'utilizzo dei profili bean Spring funziona molto bene per la modifica dell'ambiente dell'app Web.
Il problema che abbiamo è quando il nostro codice di prova deve cambiare per l'ambiente. In questi casi, il test di integrazione carica il contesto dell'applicazione dell'app Web. In questo modo non è necessario ridefinire connessioni, costanti, ecc. (Applicando il principio DRY).
Abbiamo impostato i nostri test di integrazione come segue.
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = ["classpath:applicationContext.xml"])
public class MyTestIT
{
@Autowired
@Qualifier("myRemoteURL") // a value from the web-app's applicationContext.xml
private String remoteURL;
...
}
posso farlo funzionare localmente utilizzando @ActiveProfiles
, ma questo è hard-coded e provoca i nostri test a fallire sul server di build.
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = ["classpath:applicationContext.xml"])
@ActiveProfiles("development")
public class MyTestIT
{ ... }
Ho anche provato ad utilizzare il @WebAppConfiguration
sperando che potesse in qualche modo importare la proprietà spring.profiles.active
da Maven, ma questo non funziona.
Un'altra nota, dobbiamo anche configurare il nostro codice in modo che gli sviluppatori possano eseguire l'app Web e quindi eseguire i test utilizzando il test runner di IntelliJ (o un altro IDE). Questo è molto più facile per il debug dei test di integrazione.
sto usando Primavera 3.2 e item # 2 opere molto bene per questo. Ho impostato il mio 'ApplicationContextInitializer' per chiamare' configurableApplicationContext.getEnvironment(). SetDefaultProfiles ("sviluppo"); 'che esegue il profilo di sviluppo quando eseguo i test tramite IntelliJ. –
C'è un esempio su come usare 'ActiveProfilesResolver'? Non so davvero come usarlo – daydreamer
Sì, c'è un esempio di come usare un 'ActiveProfilesResolver 'personalizzato nel [capitolo Test] (http://docs.spring.io/spring/docs/current/spring-framework -reference/html/testing.html # testcontext-ctx-management-env-profiles-ActiveProfilesResolver) del manuale di riferimento del framework di primavera. –