[jboss-svn-commits] JBoss Common SVN: r3777 - in arquillian/trunk/junit/src/main: resources and 2 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Nov 24 08:47:54 EST 2009


Author: aslak
Date: 2009-11-24 08:47:54 -0500 (Tue, 24 Nov 2009)
New Revision: 3777

Added:
   arquillian/trunk/junit/src/main/java/org/jboss/arquillian/junit/JUnitTestRunner.java
   arquillian/trunk/junit/src/main/resources/META-INF/
   arquillian/trunk/junit/src/main/resources/META-INF/services/
   arquillian/trunk/junit/src/main/resources/META-INF/services/org.jboss.arquillian.spi.TestRunner
Log:
ARQ-28 TestRunner SPI impl for JUnit

Added: arquillian/trunk/junit/src/main/java/org/jboss/arquillian/junit/JUnitTestRunner.java
===================================================================
--- arquillian/trunk/junit/src/main/java/org/jboss/arquillian/junit/JUnitTestRunner.java	                        (rev 0)
+++ arquillian/trunk/junit/src/main/java/org/jboss/arquillian/junit/JUnitTestRunner.java	2009-11-24 13:47:54 UTC (rev 3777)
@@ -0,0 +1,114 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2009, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.jboss.arquillian.junit;
+
+import org.jboss.arquillian.impl.DeployableTest;
+import org.jboss.arquillian.impl.TestResultImpl;
+import org.jboss.arquillian.spi.TestResult;
+import org.jboss.arquillian.spi.TestRunner;
+import org.jboss.arquillian.spi.TestResult.Status;
+import org.jboss.shrinkwrap.impl.base.Validate;
+import org.junit.runner.JUnitCore;
+import org.junit.runner.Request;
+import org.junit.runner.Result;
+
+/**
+ * JUnitTestRunner
+ * 
+ * A Implementation of the Arquillian TestRunner SPI for JUnit.
+ *
+ * @author <a href="mailto:aslak at conduct.no">Aslak Knutsen</a>
+ * @version $Revision: $
+ */
+public class JUnitTestRunner implements TestRunner
+{
+   private ExecutionMode executionMode = ExecutionMode.STANDALONE; 
+   
+   /* (non-Javadoc)
+    * @see org.jboss.arquillian.spi.TestRunner#setExecutionMode(org.jboss.arquillian.spi.TestRunner.ExecutionMode)
+    */
+   @Override
+   public void setExecutionMode(ExecutionMode executionMode)
+   {
+      Validate.notNull(executionMode, "ExecutionMode must be specified");
+      this.executionMode = executionMode;
+   }
+   
+   /* (non-Javadoc)
+    * @see org.jboss.arquillian.spi.TestRunner#execute(java.lang.Class, java.lang.String)
+    */
+   @Override
+   public TestResult execute(Class<?> testClass, String methodName)
+   {
+      setExecutionMode();
+      
+      JUnitCore runner = new JUnitCore();
+      Result result = runner.run(
+            Request.method(
+                  testClass, 
+                  methodName));
+      
+      TestResult testResult = convertToTestResult(result);
+      
+      resetExecutionMode();
+      
+      return testResult;
+   }
+
+   private void setExecutionMode() 
+   {
+      switch (executionMode)
+      {
+         case CONTAINER:
+            DeployableTest.setInContainer(true);
+            break;
+      }
+   }
+   
+   private void resetExecutionMode() 
+   {
+      switch (executionMode)
+      {
+         case CONTAINER:
+            DeployableTest.setInContainer(false);
+            break;
+      }
+   }
+
+   /**
+    * Convert a JUnit Result object to Arquillian TestResult
+    * 
+    * @param result JUnit Test Run Result
+    * @return The TestResult representation of the JUnit Result
+    */
+   private TestResult convertToTestResult(Result result) 
+   {
+      Status status = Status.PASSED;
+      Throwable throwable = null;
+      
+      if(result.getFailureCount() > 0) 
+      {
+         status = Status.FAILED;
+         throwable = result.getFailures().get(0).getException();
+      }
+      if(result.getIgnoreCount() > 0) 
+      {
+         status = Status.SKIPPED;
+      }
+      return new TestResultImpl(status, throwable);
+   }
+}

Added: arquillian/trunk/junit/src/main/resources/META-INF/services/org.jboss.arquillian.spi.TestRunner
===================================================================
--- arquillian/trunk/junit/src/main/resources/META-INF/services/org.jboss.arquillian.spi.TestRunner	                        (rev 0)
+++ arquillian/trunk/junit/src/main/resources/META-INF/services/org.jboss.arquillian.spi.TestRunner	2009-11-24 13:47:54 UTC (rev 3777)
@@ -0,0 +1 @@
+org.jboss.arquillian.junit.JUnitTestRunner
\ No newline at end of file



More information about the jboss-svn-commits mailing list