Author: lektran
Date: Thu Dec 24 00:40:19 2009
New Revision: 893662
URL: http://svn.apache.org/viewvc?rev=893662&view=rev
Log:
Added the ability to include all tests from a given simple method document in a
test suite by only specifying the location and not the method name. All simple
methods with a method name beginning with "test" will be included and will be
executed in the order present in the document. Example usage:
<test-case case-name="auto-accounting-transaction-tests">
<simple-method-test
location="component://accounting/script/org/ofbiz/accounting/test/AutoAcctgTransTests.xml"/>
</test-case>
Basically just mimics the behavior of the junit-test-suite tag but for simple
method tests
Modified:
ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/SimpleMethod.java
ofbiz/trunk/framework/testtools/dtd/test-suite.xsd
ofbiz/trunk/framework/testtools/src/org/ofbiz/testtools/ModelTestSuite.java
ofbiz/trunk/framework/testtools/src/org/ofbiz/testtools/SimpleMethodTest.java
Modified:
ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/SimpleMethod.java
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/SimpleMethod.java?rev=893662&r1=893661&r2=893662&view=diff
==============================================================================
--- ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/SimpleMethod.java
(original)
+++ ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/SimpleMethod.java Thu
Dec 24 00:40:19 2009
@@ -197,6 +197,43 @@
return simpleMethods;
}
+ public static List<SimpleMethod> getSimpleMethodsList(String xmlResource,
ClassLoader loader) throws MiniLangException {
+ List<SimpleMethod> simpleMethods = FastList.newInstance();
+
+ // Let the standard Map returning method take care of caching and
compilation
+ Map<String, SimpleMethod> simpleMethodMap =
SimpleMethod.getSimpleMethods(xmlResource, loader);
+
+ // Load and traverse the document again to get a correctly ordered
list of methods
+ URL xmlURL = null;
+ try {
+ xmlURL = FlexibleLocation.resolveLocation(xmlResource, loader);
+ } catch (MalformedURLException e) {
+ throw new MiniLangException("Could not find SimpleMethod XML
document in resource: " + xmlResource + "; error was: " + e.toString(), e);
+ }
+ // read in the file
+ Document document = null;
+ try {
+ document = UtilXml.readXmlDocument(xmlURL, true, true);
+ } catch (java.io.IOException e) {
+ throw new MiniLangException("Could not read XML file", e);
+ } catch (org.xml.sax.SAXException e) {
+ throw new MiniLangException("Could not parse XML file", e);
+ } catch (javax.xml.parsers.ParserConfigurationException e) {
+ throw new MiniLangException("XML parser not setup correctly", e);
+ }
+
+ if (document == null) {
+ throw new MiniLangException("Could not find SimpleMethod XML
document: " + xmlURL.toString());
+ }
+
+ Element rootElement = document.getDocumentElement();
+ for (Element simpleMethodElement:
UtilXml.childElementList(rootElement, "simple-method")) {
+
simpleMethods.add(simpleMethodMap.get(simpleMethodElement.getAttribute("method-name")));
+ }
+
+ return simpleMethods;
+ }
+
public static Map<String, SimpleMethod> getSimpleMethods(URL xmlURL)
throws MiniLangException {
Map<String, SimpleMethod> simpleMethods =
simpleMethodsURLCache.get(xmlURL);
Modified: ofbiz/trunk/framework/testtools/dtd/test-suite.xsd
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/framework/testtools/dtd/test-suite.xsd?rev=893662&r1=893661&r2=893662&view=diff
==============================================================================
--- ofbiz/trunk/framework/testtools/dtd/test-suite.xsd (original)
+++ ofbiz/trunk/framework/testtools/dtd/test-suite.xsd Thu Dec 24 00:40:19 2009
@@ -102,7 +102,14 @@
</xs:element>
<xs:attributeGroup name="attlist.simple-method-test">
<xs:attribute type="xs:string" name="location" use="required"/>
- <xs:attribute type="xs:string" name="name" use="required"/>
+ <xs:attribute type="xs:string" name="name">
+ <xs:annotation>
+ <xs:documentation>
+ The method-name of the simple-method to execute. If no
name is supplied then all simple-methods from
+ location with a method-name beginning with "test" will be
added as individual tests.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
</xs:attributeGroup>
<xs:element name="entity-xml" substitutionGroup="TestCaseTypes">
Modified:
ofbiz/trunk/framework/testtools/src/org/ofbiz/testtools/ModelTestSuite.java
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/framework/testtools/src/org/ofbiz/testtools/ModelTestSuite.java?rev=893662&r1=893661&r2=893662&view=diff
==============================================================================
--- ofbiz/trunk/framework/testtools/src/org/ofbiz/testtools/ModelTestSuite.java
(original)
+++ ofbiz/trunk/framework/testtools/src/org/ofbiz/testtools/ModelTestSuite.java
Thu Dec 24 00:40:19 2009
@@ -35,6 +35,8 @@
import org.ofbiz.entity.Delegator;
import org.ofbiz.entity.DelegatorFactory;
import org.ofbiz.entity.testtools.EntityTestCase;
+import org.ofbiz.minilang.MiniLangException;
+import org.ofbiz.minilang.SimpleMethod;
import org.ofbiz.service.GenericDispatcher;
import org.ofbiz.service.LocalDispatcher;
import org.ofbiz.service.testtools.OFBizTestCase;
@@ -113,7 +115,23 @@
} else if ("service-test".equals(nodeName)) {
this.testList.add(new ServiceTest(caseName, testElement));
} else if ("simple-method-test".equals(nodeName)) {
- this.testList.add(new SimpleMethodTest(caseName, testElement));
+ if (UtilValidate.isNotEmpty(testElement.getAttribute("name"))) {
+ this.testList.add(new SimpleMethodTest(caseName, testElement));
+ } else {
+ String methodLocation = testElement.getAttribute("location");
+ List<SimpleMethod> simpleMethods;
+ try {
+ simpleMethods =
SimpleMethod.getSimpleMethodsList(methodLocation, null);
+ for (SimpleMethod simpleMethod : simpleMethods) {
+ String methodName = simpleMethod.getMethodName();
+ if (methodName.startsWith("test")) {
+ this.testList.add(new SimpleMethodTest(caseName +
"." + methodName, methodLocation, methodName));
+ }
+ }
+ } catch (MiniLangException e) {
+ Debug.logError(e, module);
+ }
+ }
} else if ("entity-xml".equals(nodeName)) {
this.testList.add(new EntityXmlAssertTest(caseName, testElement));
} else if ("entity-xml-assert".equals(nodeName)) {
Modified:
ofbiz/trunk/framework/testtools/src/org/ofbiz/testtools/SimpleMethodTest.java
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/framework/testtools/src/org/ofbiz/testtools/SimpleMethodTest.java?rev=893662&r1=893661&r2=893662&view=diff
==============================================================================
---
ofbiz/trunk/framework/testtools/src/org/ofbiz/testtools/SimpleMethodTest.java
(original)
+++
ofbiz/trunk/framework/testtools/src/org/ofbiz/testtools/SimpleMethodTest.java
Thu Dec 24 00:40:19 2009
@@ -45,9 +45,13 @@
* @param modelTestSuite
*/
public SimpleMethodTest(String caseName, Element mainElement) {
+ this(caseName, mainElement.getAttribute("location"),
mainElement.getAttribute("name"));
+ }
+
+ public SimpleMethodTest(String caseName, String methodLocation, String
methodName) {
super(caseName);
- this.methodLocation = mainElement.getAttribute("location");
- this.methodName = mainElement.getAttribute("name");
+ this.methodLocation = methodLocation;
+ this.methodName = methodName;
}
@Override