galera, tenho uma aplicação JavaEE e preciso criar uns testes para os beans CDI. Eu ví que a extensão Weld + JUnit é ideal pra isso, consigo testar os beans e mockar o JPA.
Mas no momento só consigo rodar os testes pela IDE (botão direito na classe e rodar), o comando mvn test não está disparando os testes. Deve estar faltando algo no meu pom.xml?
pom.xml
<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<version.log4j2>2.8.2</version.log4j2>
<version.lombok>1.18.8</version.lombok>
</properties>
<dependencies>
<!-- ..... outras dependencias -->
<!-- dependencias de teste -->
<dependency>
<groupId>org.jboss.weld</groupId>
<artifactId>weld-junit5</artifactId>
<version>2.0.1.Final</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.mockito/mockito-all -->
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-all</artifactId>
<version>1.10.19</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<finalName>test-junit5-javaee</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.1</version>
<configuration>
<encoding>UTF-8</encoding>
<source>${maven.compiler.source}</source>
<target>${maven.compiler.target}</target>
<annotationProcessorPaths>
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${version.lombok}</version>
</path>
</annotationProcessorPaths>
</configuration>
</plugin>
</plugins>
</build>
classe de Teste:
@ExtendWith(WeldJunit5Extension.class)
public class LogServiceTest
{
@WeldSetup
public WeldInitiator weld = WeldInitiator
.from(LogService.class)
.setPersistenceContextFactory(EntityManagerMock.getPersistenceCtxFactory())
.activate(RequestScoped.class)
.build();
@Test
public void shouldSaveLogAndGenerateId(LogService logService)
{
Log log = LogMock.createLog();
Assertions.assertNull(log.getId());
log = logService.saveLog(log);
Assertions.assertNotNull(log.getId());
}
}
e o CDI bean LogService:
@Model
public class LogService
{
@PersistenceContext
private EntityManager entityManager;
public Log saveLog(final Log log)
{
entityManager.persist(log);
return log;
}
}
Java 11 e Maven 3.6.0
$ mvn -version
Apache Maven 3.6.0
Maven home: /usr/share/maven
Java version: 11.0.6, vendor: Amazon.com Inc., runtime: /usr/lib/jvm/amazon-corretto-11.0.6.10.1-linux-x64
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "5.0.0-32-generic", arch: "amd64", family: "unix"