2 Replies Latest reply on Feb 8, 2012 12:16 PM by Karel Piwko

# Arquillian 1.0.0CR7 JBoss 7.0.1.Final all tests pass

Hi, we are trying to switch our testing environment to Arquillian. After several fruitless hours we managed to deploy and start our tests without any errors. But then I got suspicious because all tests passed. That is not very probable so I created a test, that does nothing but fail(). This one passes too. It seems, that the test runner does not communicate with the in-container test. Beside the fact, that in my opinion the test should fail in that case, I seem to be doing something wrong. After spending several hours, I am hoping to get help here: This is my maven profile. I tried with and without the commented-out dependency:

     <profile>
<!-- An optional Arquillian testing profile that executes tests
in your JBoss AS instance -->
<!-- This profile will start a new JBoss AS instance, and execute the
test, shutting it down when done -->
<!-- Run with: mvn clean test -Parq-jbossas-managed -->
<id>arq-jbossas-managed</id>
<dependencies>
<dependency>
<groupId>org.jboss.spec</groupId>
<artifactId>jboss-javaee-6.0</artifactId>
<version>1.0.0.Final</version>
<type>pom</type>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.jboss.as</groupId>
<artifactId>jboss-as-arquillian-container-managed</artifactId>
<version>7.0.2.Final</version>
</dependency>
<!--                <dependency>
<groupId>org.jboss.arquillian</groupId>
<artifactId>arquillian-bom</artifactId>
<version>${arquillian.version}</version> <scope>test</scope> <type>pom</type> </dependency> <dependency> <groupId>org.jboss.as</groupId> <artifactId>jboss-as-arquillian-container-managed</artifactId> <version>${jboss.version}</version>
<scope>test</scope>
</dependency>
-->
<dependency>
<groupId>org.jboss.arquillian.testng</groupId>
<artifactId>arquillian-testng-container</artifactId>
<version>${arquillian.version}</version> <scope>test</scope> </dependency> </dependencies> </profile>  This is my test: public class CopyOfBenutzerTest extends Arquillian { private Benutzer benutzer = null; private Benutzer benutzerTest = null; @Deployment(testable = true) public static JavaArchive createTestArchive() { /** * Define a package filter that filters out all Test classes. */ Filter<ArchivePath> filter = new Filter<ArchivePath>() { @Override public boolean include(ArchivePath path) { return !path.get().endsWith("Test.class"); } }; return ShrinkWrap.create(JavaArchive.class, "besozial-test.jar") .addPackages(true, filter, "de.comitatus.besozial.entity") .addPackages(true, filter, "de.comitatus.besozial.session") .addPackages(true, filter, "de.comitatus.besozial.dto").addClass(ArquillianTestBase.class) .addClass(SessionTestBase.class).addClass(DBFixBase.class) .addAsManifestResource(new ByteArrayAsset("<beans/>".getBytes()), ArchivePaths.create("beans.xml")) .addAsManifestResource(new File("/test-persistence.xml"), ArchivePaths.create("persistence.xml")); } @Resource(mappedName = "java:/module/UserTransaction") protected UserTransaction transaction; @PersistenceContext protected EntityManager em; @Test @RunAsClient public void testNothingJustFailLocal() { log().error("Starting test"); System.err.println("Starting test"); fail("sd jh"); } @Test public void testNothingJustFail() { log().error("Starting test"); System.err.println("Starting test"); fail("sd jh"); } @Test public void testNewUser() { log().error("Starting test"); System.err.println("Starting test"); beginTransaction(); benutzer = new Benutzer("test", "pwtest"); em.persist(benutzer); commitTransaction(); beginTransaction(); benutzerTest = em.find(Benutzer.class, benutzer.getId().intValue()); commitTransaction(); assertNotNull("Id was generated.", benutzerTest.getId()); assertEquals("test", benutzerTest.getLogin()); assertNotSame("pwtest", benutzerTest.getPasswort()); // Passwort sollte jetzt verschluesselt sein fail("sd jh"); } @Test(dependsOnMethods = "testNewUser") public void testAccessors() { beginTransaction(); benutzer = em.find(Benutzer.class, benutzer.getId()); benutzer.setLogin("SLogin"); benutzer.setAktuell(true); benutzer.setNickname("SNick"); benutzer.setFirstname("SFirst"); benutzer.setName("SName"); benutzer.setBirthday(java.sql.Date.valueOf("2010-05-04")); benutzer.setFbUserId("SfbID"); benutzer.setFbAccessToken("123456"); benutzer.setFbAccessTokenExpires("123456"); benutzer.setUserImage("/ben/image"); benutzer.setEmail("ben@email.de"); em.merge(benutzer); commitTransaction(); beginTransaction(); benutzerTest = null; benutzerTest = em.find(Benutzer.class, benutzer.getId()); commitTransaction(); assertEquals("SLogin", benutzerTest.getLogin()); assertEquals(true, benutzerTest.getAktuell()); assertEquals("SNick", benutzerTest.getNickname()); assertEquals("SName", benutzerTest.getName()); assertEquals(java.sql.Date.valueOf("2010-05-04"), benutzerTest.getBirthday()); assertEquals("SfbID", benutzerTest.getFbUserId()); assertEquals("123456", benutzerTest.getFbAccessToken()); assertEquals("123456", benutzerTest.getFbAccessTokenExpires()); assertEquals("/ben/image", benutzerTest.getUserImage()); assertEquals("ben@email.de", benutzerTest.getEmail()); }  When I run the test, JBoss is startet, the EJB jar is deployed and all tests but the local fail test pass. Same behaviour in Eclipse Test Runner and maven test. Though I see some strange error messages in the server log: 31.01.2012 12:26:34 org.jboss.as.arquillian.container.managed.ManagedDeployableContainer startInternal INFO: Starting container with: [java, -Xmx512m, -XX:MaxPermSize=128m, -Djboss.home.dir=J:\\Appserver\\jboss-as-7.0.2.Final, -Dorg.jboss.boot.log.file=J:\\Appserver\\jboss-as-7.0.2.Final/standalone/log/boot.log, -Dlogging.configuration=file:J:\\Appserver\\jboss-as-7.0.2.Final/standalone/configuration/logging.properties, -Djboss.modules.dir=J:\\Appserver\\jboss-as-7.0.2.Final\modules, -jar, J:\Appserver\jboss-as-7.0.2.Final\jboss-modules.jar, -mp, J:\\Appserver\\jboss-as-7.0.2.Final\modules, -logmodule, org.jboss.logmanager, -jaxpmodule, javax.xml.jaxp-provider, org.jboss.as.standalone, -server-config, standalone.xml] 31.01.2012 12:26:34 org.jboss.remoting3.EndpointImpl <clinit> INFO: JBoss Remoting version 3.2.0.Beta2 31.01.2012 12:26:34 org.xnio.Xnio <clinit> INFO: XNIO Version 3.0.0.Beta3 31.01.2012 12:26:34 org.xnio.nio.NioXnio <clinit> INFO: XNIO NIO Implementation Version 3.0.0.Beta3 12:26:35,651 INFO [org.jboss.modules] JBoss Modules version 1.0.2.GA .... 12:26:39,236 INFO [org.jboss.as] (Controller Boot Thread) JBoss AS 7.0.2.Final "Arc" started in 3860ms - Started 115 of 175 services (57 services are passive or on-demand) 31.01.2012 12:26:40 org.jboss.as.arquillian.protocol.jmx.ArquillianServiceDeployer doServiceDeploy INFO: Deploy arquillian service: arquillian-service: 1080 assets 12:26:42,304 INFO [org.jboss.as.server.deployment] (pool-1-thread-1) Content added at location J:\Appserver\jboss-as-7.0.2.Final\standalone\data\content\ff\b06fe014723aa04626b4d4117df9e653bc3cf1\content 12:26:42,307 INFO [org.jboss.as.server.deployment] (MSC service thread 1-1) Starting deployment of "arquillian-service" 12:26:42,562 INFO [org.jboss.as.jpa] (MSC service thread 1-2) added javax.persistence.api dependency to arquillian-service 12:26:42,584 INFO [org.jboss.osgi.framework.internal.BundleManager] (MSC service thread 1-2) JBossOSGi Framework Core - 1.0.0.CR8 ... 12:26:45,168 INFO [org.jboss.osgi.framework.internal.FrameworkActive] (MSC service thread 1-1) OSGi Framework started 12:26:45,168 INFO [org.jboss.as.osgi] (MSC service thread 1-1) JBAS011920: Register module: Module "deployment.arquillian-service:main" from Service Module Loader 12:26:45,179 INFO [org.jboss.osgi.framework.internal.BundleManager] (MSC service thread 1-2) Install bundle: arquillian-service:0.0.0 12:26:45,318 INFO [org.jboss.as.server.controller] (pool-1-thread-1) Deployed "arquillian-service" 31.01.2012 12:26:45 org.jboss.remoting3.remote.RemoteConnection handleException ERROR: JBREM00200: Remote connection failed: java.io.IOException: Window open for non-existent channel 12:26:45,970 INFO [org.jboss.as.server.deployment] (pool-1-thread-1) Content added at location J:\Appserver\jboss-as-7.0.2.Final\standalone\data\content\be\a060002eb8a48903aca0b076e3f0eb658e1f54\content 12:26:45,974 INFO [org.jboss.as.server.deployment] (MSC service thread 1-2) Starting deployment of "besozial-test.jar" ... 12:26:52,496 INFO [org.jboss.as.server.controller] (pool-1-thread-1) Deployed "besozial-test.jar" 31.01.2012 12:26:54 de.comitatus.besozial.entity.benutzer.CopyOfBenutzerTest testNothingJustFailLocal ERROR: Starting test Starting test 12:26:54,708 INFO [org.jboss.weld] (MSC service thread 1-2) Stopping weld service 12:26:54,715 INFO [org.jboss.as.server.controller] (pool-1-thread-1) Undeployed "besozial-test.jar" 12:26:54,715 INFO [org.jboss.jpa] (MSC service thread 1-2) stopping Persistence Unit Service 'besozial-test.jar#beSozial' 12:26:54,744 INFO [org.jboss.as.server.deployment] (MSC service thread 1-3) Stopped deployment besozial-test.jar in 51ms PASSED: testNewUser PASSED: testNothingJustFail PASSED: testAccessors PASSED: removeTestdata FAILED: testNothingJustFailLocal java.lang.AssertionError: sd jh ... =============================================== Default test Tests run: 5, Failures: 1, Skips: 0 =============================================== 31.01.2012 12:26:54 org.jboss.as.arquillian.protocol.jmx.ArquillianServiceDeployer undeploy INFO: Undeploy arquillian service: arquillian-service: 1080 assets 12:26:55,051 INFO [org.jboss.as.osgi] (MSC service thread 1-1) JBAS011922: Unregister module: Module "deployment.arquillian-service:main" from Service Module Loader 12:26:55,052 ERROR [org.jboss.osgi.framework.internal.BundleManager] (MSC service thread 1-1) Cannot find bundle associated with module: deployment.arquillian-service:main 12:26:55,065 INFO [org.jboss.as.server.controller] (pool-1-thread-1) Undeployed "arquillian-service" 12:26:55,078 INFO [org.jboss.as.server.deployment] (MSC service thread 1-1) Stopped deployment arquillian-service in 29ms 31.01.2012 12:26:55 org.jboss.remoting3.remote.RemoteConnection handleException ERROR: JBREM00200: Remote connection failed: java.io.IOException: Eine vorhandene Verbindung wurde vom Remotehost geschlossen  When I switch back to CR5 of Arquillian, the system complains about some TestNG missing method. So I suspect that the test runner communicates with the container in that version. Forgot my arquillian.xml. Tried with and without protocol definition. <arquillian xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://jboss.org/schema/arquillian" xsi:schemaLocation="http://jboss.org/schema/arquillian http://jboss.org/schema/arquillian/arquillian_1_0.xsd"> <engine> <property name="deploymentExportPath">target</property> </engine> <container qualifier="jboss7" default="true"> <protocol type="jmx-as7"> <property name="executionType">REMOTE</property> </protocol> <configuration> <property name="jbossHome">${target.environment.jbossHome}</property>
</configuration>
</container>
</arquillian>



Thanks for any help.

Stefan

• ###### 1. Re: Arquillian 1.0.0CR7 JBoss 7.0.1.Final all tests pass

Hello Stefan,

I expect you're experiencing https://issues.jboss.org/browse/ARQ-563. It usually triggers when a something bad happens before you test in Arquililan test class.

You can experiment with replacing @Resource injection or run Arquillian in debug mode with attached debugged to check out what had failed.

Hope that helps,

Karel

1 of 1 people found this helpful