Author: mrdon
Date: Thu Nov 30 17:35:38 2006
New Revision: 481125

URL: http://svn.apache.org/viewvc?view=rev&rev=481125
Log:
Adding TestNG support
WW-1531

Added:
    
struts/struts2/trunk/core/src/main/java/org/apache/struts2/TestNGStrutsTestCase.java
    
struts/struts2/trunk/core/src/main/java/org/apache/struts2/util/StrutsTestCaseHelper.java
    
struts/struts2/trunk/core/src/test/java/org/apache/struts2/TestNGStrutsTestCaseTest.java
Modified:
    struts/struts2/trunk/core/pom.xml
    
struts/struts2/trunk/core/src/main/java/org/apache/struts2/StrutsTestCase.java

Modified: struts/struts2/trunk/core/pom.xml
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/core/pom.xml?view=diff&rev=481125&r1=481124&r2=481125
==============================================================================
--- struts/struts2/trunk/core/pom.xml (original)
+++ struts/struts2/trunk/core/pom.xml Thu Nov 30 17:35:38 2006
@@ -139,7 +139,7 @@
         <dependency>
             <groupId>opensymphony</groupId>
             <artifactId>xwork</artifactId>
-            <version>2.0-beta-2</version>
+            <version>2.0-SNAPSHOT</version>
         </dependency>
 
         <dependency>
@@ -271,6 +271,14 @@
             <version>3.8.1</version>
             <!-- has to be compile for StrutsTestCase, which is part of the 
base package so others can write unit tests -->
             <optional>true</optional>
+        </dependency>
+
+        <dependency>
+            <groupId>org.testng</groupId>
+            <artifactId>testng</artifactId>
+            <version>5.1</version>
+            <optional>true</optional>
+            <classifier>jdk15</classifier>
         </dependency>
 
         <dependency>

Modified: 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/StrutsTestCase.java
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/StrutsTestCase.java?view=diff&rev=481125&r1=481124&r2=481125
==============================================================================
--- 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/StrutsTestCase.java 
(original)
+++ 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/StrutsTestCase.java 
Thu Nov 30 17:35:38 2006
@@ -20,41 +20,29 @@
  */
 package org.apache.struts2;
 
-import java.util.HashMap;
 import java.util.Map;
 
-import org.apache.struts2.config.StrutsXmlConfigurationProvider;
 import org.apache.struts2.dispatcher.Dispatcher;
-import org.springframework.mock.web.MockServletContext;
+import org.apache.struts2.util.StrutsTestCaseHelper;
 
 import com.opensymphony.xwork2.XWorkTestCase;
-import com.opensymphony.xwork2.config.ConfigurationManager;
-import com.opensymphony.xwork2.util.LocalizedTextUtil;
 
 /**
- * Base test case for unit testing Struts.
+ * Base test case for JUnit testing Struts.
  */
 public abstract class StrutsTestCase extends XWorkTestCase {
 
-
     /**
      * Sets up the configuration settings, XWork configuration, and
      * message resources
      */
     protected void setUp() throws Exception {
         super.setUp();
-        LocalizedTextUtil.clearDefaultResourceBundles();
         initDispatcher(null);
-
     }
     
     protected Dispatcher initDispatcher(Map<String,String> params) {
-        if (params == null) {
-            params = new HashMap<String,String>();
-        }
-        Dispatcher du = new Dispatcher(new MockServletContext(), params);
-        du.init();
-        Dispatcher.setInstance(du);
+        Dispatcher du = StrutsTestCaseHelper.initDispatcher(params);
         configurationManager = du.getConfigurationManager();
         configuration = configurationManager.getConfiguration();
         container = configuration.getContainer();
@@ -63,7 +51,7 @@
 
     protected void tearDown() throws Exception {
         super.tearDown();
-        Dispatcher.setInstance(null);
+        StrutsTestCaseHelper.tearDown();
     }
 
 }

Added: 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/TestNGStrutsTestCase.java
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/TestNGStrutsTestCase.java?view=auto&rev=481125
==============================================================================
--- 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/TestNGStrutsTestCase.java
 (added)
+++ 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/TestNGStrutsTestCase.java
 Thu Nov 30 17:35:38 2006
@@ -0,0 +1,58 @@
+/*
+ * $Id: StrutsTestCase.java 476696 2006-11-19 03:56:18Z tmjee $
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.apache.struts2;
+
+import java.util.Map;
+
+import org.apache.struts2.dispatcher.Dispatcher;
+import org.apache.struts2.util.StrutsTestCaseHelper;
+import org.testng.annotations.AfterTest;
+import org.testng.annotations.BeforeTest;
+
+import com.opensymphony.xwork2.TestNGXWorkTestCase;
+
+/**
+ * Base test class for TestNG unit tests.  Provides common Struts variables
+ * and performs Struts setup and teardown processes
+ */
+public class TestNGStrutsTestCase extends TestNGXWorkTestCase {
+
+    @BeforeTest
+    protected void setUp() throws Exception {
+        super.setUp();
+        initDispatcher(null);
+    }
+    
+    protected Dispatcher initDispatcher(Map<String,String> params) {
+        Dispatcher du = StrutsTestCaseHelper.initDispatcher(params);
+        configurationManager = du.getConfigurationManager();
+        configuration = configurationManager.getConfiguration();
+        container = configuration.getContainer();
+        return du;
+    }
+
+    @AfterTest
+    protected void tearDown() throws Exception {
+        super.tearDown();
+        StrutsTestCaseHelper.tearDown();
+    }
+}
+

Added: 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/util/StrutsTestCaseHelper.java
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/util/StrutsTestCaseHelper.java?view=auto&rev=481125
==============================================================================
--- 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/util/StrutsTestCaseHelper.java
 (added)
+++ 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/util/StrutsTestCaseHelper.java
 Thu Nov 30 17:35:38 2006
@@ -0,0 +1,57 @@
+/*
+ * $Id: StrutsTestCase.java 476696 2006-11-19 03:56:18Z tmjee $
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.apache.struts2.util;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.struts2.dispatcher.Dispatcher;
+import org.springframework.mock.web.MockServletContext;
+
+import com.opensymphony.xwork2.util.LocalizedTextUtil;
+
+/**
+ * Generic test setup methods to be used with any unit testing framework. 
+ */
+public class StrutsTestCaseHelper {
+    
+    /**
+     * Sets up the configuration settings, XWork configuration, and
+     * message resources
+     */
+    public static void setUp() throws Exception {
+        LocalizedTextUtil.clearDefaultResourceBundles();
+    }
+    
+    public static Dispatcher initDispatcher(Map<String,String> params) {
+        if (params == null) {
+            params = new HashMap<String,String>();
+        }
+        Dispatcher du = new Dispatcher(new MockServletContext(), params);
+        du.init();
+        Dispatcher.setInstance(du);
+        return du;
+    }
+
+    public static void tearDown() throws Exception {
+        Dispatcher.setInstance(null);
+    }
+}

Added: 
struts/struts2/trunk/core/src/test/java/org/apache/struts2/TestNGStrutsTestCaseTest.java
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/test/java/org/apache/struts2/TestNGStrutsTestCaseTest.java?view=auto&rev=481125
==============================================================================
--- 
struts/struts2/trunk/core/src/test/java/org/apache/struts2/TestNGStrutsTestCaseTest.java
 (added)
+++ 
struts/struts2/trunk/core/src/test/java/org/apache/struts2/TestNGStrutsTestCaseTest.java
 Thu Nov 30 17:35:38 2006
@@ -0,0 +1,65 @@
+/*
+ * $Id: StrutsTestCase.java 476696 2006-11-19 03:56:18Z tmjee $
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.apache.struts2;
+
+import junit.framework.TestCase;
+
+import org.apache.struts2.dispatcher.Dispatcher;
+import org.testng.TestListenerAdapter;
+import org.testng.TestNG;
+import org.testng.annotations.Test;
+
+import com.opensymphony.xwork2.config.ConfigurationManager;
+
+public class TestNGStrutsTestCaseTest extends TestCase {
+
+    public void testSimpleTest() throws Exception {
+        TestListenerAdapter tla = new TestListenerAdapter();
+        TestNG testng = new TestNG();
+        testng.setTestClasses(new Class[] { RunTest.class });
+        testng.addListener(tla);
+        try {
+            testng.run();
+            assertEquals(1, tla.getPassedTests().size());
+            assertEquals(0, tla.getFailedTests().size());
+            assertTrue(RunTest.ran);
+            assertNotNull(RunTest.mgr);
+            assertNotNull(RunTest.du);
+            assertNull(Dispatcher.getInstance());
+        } finally {
+            RunTest.mgr = null;
+        }
+    }
+    
+    @Test
+    public static class RunTest extends TestNGStrutsTestCase {
+        public static boolean ran = false;
+        public static ConfigurationManager mgr;
+        public static Dispatcher du;
+        
+        public void testRun() {
+            ran = true;
+            mgr = this.configurationManager;
+            du = Dispatcher.getInstance();
+        }
+    }
+}
+


Reply via email to