Agora que os testes de integração Alfresco de módulos personalizados são executados usando Docker, gostaria de saber como fazer Spring beans adicionais disponíveis neste contexto e como o acesso Spring beans existente em classes de teste.
Até Alfresco 5.x, I usado para anotar a classe de teste com
@ContextConfiguration("classpath:alfresco/application-context.xml")
Isso fez com que o contexto da Primavera disponível. Para fazer feijão Primavera deste contexto disponíveis na classe de teste, eu anotado membros como este:
@Autowired
@Qualifier("authenticationComponent")
private AuthenticationComponent authenticationComponent;
Além disso, eu era capaz de definir feijão mola adicional na src/test/resources/alfresco/extension/test-context.xml
.
É este o modelo de utilização ao escrever testes de integração para 6.xe Docker?
Pelo menos a anotação org.springframework.test.context.ContextConfiguration
não está incluído em uma compilação do módulo usando o SDK arquétipo Maven 4.0.0.
Este post no blog fala sobre as anotações acima mencionados. Mas as dependências puxados pelo pom.xml
criado a partir do SDK 4 arquétipo não incluem essas anotações.
Uma abordagem diferente parece ser a única utilização
@RunWith(value = AlfrescoTestRunner.class)
na classe de teste de integração. Mas como faço para obter os grãos de primavera como nodeService
injetado? E como faço para declarar e tornar disponíveis Spring beans adicionais que são parte do meu módulo personalizado e exigido pelo teste de integração para ter sucesso?
Você pode obter o contexto da Primavera através AlfrescoTestRunner
da seguinte forma:
@Before
public void setUp() {
this.nodeService = (NodeService) super.getApplicationContext().getBean("nodeService");
}
Eu faço o mesmo com feijão personalizados: super.getApplicationContext().getBean(MyType.class);
Uma vez que os testes de integração executar no repositório, todo o contexto da Primavera está automaticamente disponível.
Note-se que as suas necessidades de classe de teste para estender AbstractAlfrescoIT
para que isso funcione.
Uma classe de exemplo pode ser parecido com este:
package nl.open.mystuff;
import org.alfresco.rad.test.AbstractAlfrescoIT;
import org.alfresco.rad.test.AlfrescoTestRunner;
import org.alfresco.service.cmr.repository.NodeService;
@RunWith(value = AlfrescoTestRunner.class)
public class MyCustomIT extends AbstractAlfrescoIT {
private NodeService nodeService;
private MyType myType;
@Before
public void setUp() {
this.nodeService = (NodeService) super.getApplicationContext().getBean("NodeService");
this.myType = super.getApplicationContext().getBean(MyType.class);
}
}
Em Alfresco SDK 3, você pode até mesmo adicionar seus próprios arquivos XML Primavera sob src/test/resources/alfresco/extension/*-context.xml
. Eu imagino que isso funciona ainda, mas eu não tentei com SDK 4 mim.