Hi Rafael,

On 2.4.2015 16:10, Rafael Pestano wrote:
Hi guys,

i'm having some problems to create a simple test using test control module
in an EE6 app.

Class under test:

@MessageBundle
public interface Messages {

   @MessageTemplate("{label.system-info}")
   String systemInfo();

}


MessagesTest.java

@RunWith(CdiTestRunner.class)
public class MessagesTest {

   @Inject
   Messages messages;

   @Test
   public void deveLerMensagemDoBundle(){
     assertEquals(messages.systemInfo(),"System info");
   }
}


1 - the above dependencies were not sufficient:

<dependency>
     <groupId>org.apache.deltaspike.modules</groupId>
     <artifactId>deltaspike-test-control-module-api</artifactId>
     <version>${ds.version}</version>
     <scope>test</scope>
</dependency>
<dependency>
     <groupId>org.apache.deltaspike.modules</groupId>
     <artifactId>deltaspike-test-control-module-impl</artifactId>
     <version>${ds.version}</version>
     <scope>test</scope>
</dependency>
<dependency>
     <groupId>org.apache.deltaspike.cdictrl</groupId>
     <artifactId>deltaspike-cdictrl-weld</artifactId>
     <version>${ds.version}</version>
     <scope>test</scope>
</dependency>


needed to add

<dependency>
     <groupId>org.jboss.weld.se</groupId>
     <artifactId>weld-se-core</artifactId>
     <version>2.2.6.Final</version>
     <scope>test</scope>
</dependency>


otherwise i get: java.lang.NoClassDefFoundError:
org/jboss/weld/environment/se/Weld

The deltaspike-cdictrl-weld project needs a Weld impl on the classpath. It has a provided-scoped dependency on weld-se-core. It is provided and not compile scoped so that cdictrl can work also in an EE container, where a CDI impl is already present.

I made a clarification in the docs: https://github.com/apache/deltaspike/pull/25

2 - beans.xml in test/resources/META-INF was not suffcient

needed to add beans.xml to src/main/resources/META-INF

otherwise i get:

  WELD-001408: Unsatisfied dependencies for type Messages with qualifiers
@Default
   at injection point [BackedAnnotatedField] @Inject
com.procergs.apm.it.MessagesTest.messages

Yes, well, beans.xml needs to be where the tested beans are. I suppose that "target/classes" and "target/test-classes" are treated as two different BDAs.

3 - In the test the line: *messages.systemInfo() *return
"???label.system-info???" meaning taht the key was not found in the message
bundle although when running the application the message is found.

My messages.properties is located at *src/main/resources*.

The file with messages must be named the same as the message-bundle bean, including the package. So if your message-bundle bean is "com.example.Messages" then you need to have src/main/resources/com/example/Messages.properties.


Any help is appreciated.

Thanks in advance.




HTH,

Ron

--
Ron Smeral
JBoss Quality Engineer
Brno

Reply via email to