]> git.argeo.org Git - gpl/argeo-slc.git/commitdiff
Introduce unit tests
authorMathieu Baudier <mbaudier@argeo.org>
Fri, 1 Feb 2008 09:51:26 +0000 (09:51 +0000)
committerMathieu Baudier <mbaudier@argeo.org>
Fri, 1 Feb 2008 09:51:26 +0000 (09:51 +0000)
git-svn-id: https://svn.argeo.org/slc/trunk@941 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

org.argeo.slc.example/exampleSlcAppli/conf/contextTests.xml
org.argeo.slc.example/exampleSlcAppli/root/Category1/SubCategory2/build.xml
org.argeo.slc.example/exampleSlcAppli/root/Category1/SubCategory2/complex.xml
org.argeo.slc.example/exampleSlcAppli/root/Context/build.xml [new file with mode: 0644]
org.argeo.slc.example/src/test/java/org/argeo/slc/example/junit/ContextIntegrationTest.java [new file with mode: 0644]
org.argeo.slc.example/src/test/java/org/argeo/slc/example/junit/ExampleIntegrationTest.java

index 440c6b87bea56d196996f8416dccb503d046dbf5..3400ef02f037e3d8661bc1034c8ca1123bb4fc08 100644 (file)
        </bean>\r
        \r
        <bean id="context.simple2" parent="context.template">\r
+               <property name="values">\r
+                       <map>\r
+                               <entry key="reference" value="29" />\r
+                       </map>\r
+               </property>\r
+               <property name="expectedValues">\r
+                       <map>\r
+                               <entry key="reference" value="22" />\r
+                               <entry key="varIntern" value="60" />\r
+                       </map>\r
+               </property>\r
+       </bean>\r
+       \r
+       <bean id="context.complex1" parent="context.template">\r
                <property name="values">\r
                        <map>\r
                                <entry key="var" value="50" />\r
+                               <entry key="reference2" value="28" />\r
+                               <entry key="greeting" value="Hallo" />\r
                        </map>\r
                </property>\r
                <property name="expectedValues">\r
                        <map>\r
-                               <entry key="reference" value="21" />\r
+                               <entry key="reference2" value="22" />\r
                                <entry key="var" value="50" />\r
                                <entry key="varIntern" value="60" />\r
                                <entry key="varExtern" value="70" />\r
+                               <entry key="greeting" value="Bonjour" />\r
                        </map>\r
                </property>\r
        </bean>\r
index d27ad20fcf8c17f3e28370a0b042afd95edd907f..f07f374e84fe96fb3241eabac9216d574e138fe8 100644 (file)
@@ -3,7 +3,7 @@
 \r
        <import file="complex.xml" />\r
 \r
-       <target name="test" depends="testSimple,testComplex,testError,testContext">\r
+       <target name="test" depends="testSimple,testComplex,testError">\r
                <slc.closeResult result="testResult" />\r
                <slc.closeResult result="testResult2" />\r
                <slc.report report="report" />\r
index 88cbf3fad225168366f5008508a3eea044d24f93..14e8695b7bca7d18f24be8a6956bf90a33b3cde7 100644 (file)
@@ -1,7 +1,6 @@
 <project>\r
        <description>Complex targets</description>\r
 \r
-\r
        <target name="testComplex" description="A complex test">\r
                <slc.test description="Complex test">\r
                        <testDefinition bean="complexExampleTestDef" />\r
                        <testData bean="testData.un" />\r
                </slc.test>\r
        </target>\r
-\r
-       <target name="testContext" description="Tests with context">\r
-               <slc.context id="context1">\r
-                       <values>\r
-                               <entry key="varExtern" value="70" />\r
-                       </values>\r
-                       <expectedValues>\r
-                               <entry key="reference" value="20" />\r
-                       </expectedValues>\r
-               </slc.context>\r
-\r
-               <slc.test description="Context 1">\r
-                       <testDefinition bean="simpleContextTestDef" />\r
-                       <testData bean="context.simple1">\r
-                               <override name="parentContext" antref="context1" />\r
-                       </testData>\r
-               </slc.test>\r
-\r
-               <slc.test description="Context 2">\r
-                       <testDefinition bean="simpleContextTestDef" />\r
-                       <testData bean="context.simple2">\r
-                               <override name="parentContext" antref="context1" />\r
-                       </testData>\r
-               </slc.test>\r
-       </target>\r
-\r
-\r
 </project>
\ No newline at end of file
diff --git a/org.argeo.slc.example/exampleSlcAppli/root/Context/build.xml b/org.argeo.slc.example/exampleSlcAppli/root/Context/build.xml
new file mode 100644 (file)
index 0000000..10c3f87
--- /dev/null
@@ -0,0 +1,69 @@
+<project default="testContext">\r
+       <target name="testContext" description="Tests with context">\r
+               <slc.context id="context1">\r
+                       <values>\r
+                               <entry key="varExtern" value="70" />\r
+                       </values>\r
+                       <expectedValues>\r
+                               <entry key="reference" value="20" />\r
+                       </expectedValues>\r
+               </slc.context>\r
+\r
+               <slc.test description="Context 1">\r
+                       <testDefinition bean="simpleContextTestDef" />\r
+                       <testData bean="context.simple1">\r
+                               <override name="parentContext" antref="context1" />\r
+                       </testData>\r
+               </slc.test>\r
+\r
+               <slc.test description="Context 2">\r
+                       <testDefinition bean="simpleContextTestDef" />\r
+                       <testData bean="context.complex1">\r
+                               <override name="parentContext" antref="context1">\r
+                                       <override name="updateValues">\r
+                                               <map>\r
+                                                       <entry key="greeting" value="Bonjour" />\r
+                                               </map>\r
+                                       </override>\r
+                                       <override name="updateExpectedValues">\r
+                                               <map>\r
+                                                       <entry key="reference2" value="28" />\r
+                                               </map>\r
+                                       </override>\r
+                               </override>\r
+                       </testData>\r
+               </slc.test>\r
+       </target>\r
+\r
+       <target name="testBaseContext" description="Tests with base context">\r
+               <slc.context id="context1">\r
+                       <expectedValues>\r
+                               <entry key="reference" value="20" />\r
+                       </expectedValues>\r
+               </slc.context>\r
+\r
+               <slc.test description="Context 1">\r
+                       <testDefinition bean="simpleContextTestDef" />\r
+                       <testData bean="context.simple1">\r
+                               <override name="parentContext" antref="context1" />\r
+                       </testData>\r
+               </slc.test>\r
+\r
+               <slc.context id="context2" basedon="context1">\r
+                       <values>\r
+                               <entry key="reference" value="29" />\r
+                       </values>\r
+                       <expectedValues>\r
+                               <entry key="reference" value="29" />\r
+                       </expectedValues>\r
+               </slc.context>\r
+               \r
+               <slc.test description="Context 2">\r
+                       <testDefinition bean="simpleContextTestDef" />\r
+                       <testData bean="context.simple2">\r
+                               <override name="parentContext" antref="context2"/>\r
+                       </testData>\r
+               </slc.test>\r
+       </target>\r
+\r
+</project>
\ No newline at end of file
diff --git a/org.argeo.slc.example/src/test/java/org/argeo/slc/example/junit/ContextIntegrationTest.java b/org.argeo.slc.example/src/test/java/org/argeo/slc/example/junit/ContextIntegrationTest.java
new file mode 100644 (file)
index 0000000..f7f69bc
--- /dev/null
@@ -0,0 +1,95 @@
+package org.argeo.slc.example.junit;\r
+\r
+import java.io.File;\r
+\r
+import junit.framework.TestCase;\r
+\r
+import org.springframework.context.ApplicationContext;\r
+\r
+import org.apache.commons.logging.Log;\r
+import org.apache.commons.logging.LogFactory;\r
+import org.apache.tools.ant.Project;\r
+\r
+import org.argeo.slc.ant.AntRegistryUtil;\r
+import org.argeo.slc.ant.SlcProjectHelper;\r
+import org.argeo.slc.core.test.NumericTRId;\r
+import org.argeo.slc.core.test.TestStatus;\r
+import org.argeo.slc.core.test.tree.TreeTestResult;\r
+import org.argeo.slc.dao.test.TestResultDao;\r
+import org.argeo.slc.unit.test.tree.UnitTestTreeUtil;\r
+\r
+public class ContextIntegrationTest extends TestCase {\r
+       private static Log log = LogFactory.getLog(ContextIntegrationTest.class);\r
+\r
+       public void testContext() throws Exception {\r
+               TestResultDao<TreeTestResult> testResultDao = runAnt(\r
+                               "root/Context/build.xml", null);\r
+\r
+               NumericTRId numericTRId = new NumericTRId();\r
+               numericTRId.setValue(1l);\r
+               TreeTestResult testResult1 = (TreeTestResult) testResultDao\r
+                               .getTestResult(numericTRId);\r
+\r
+               String basePath = "/root/Context/testContext/";\r
+               UnitTestTreeUtil.assertPart(testResult1, basePath\r
+                               + "slc.test0/reference", 0, TestStatus.PASSED,\r
+                               "Values matched for key 'reference'");\r
+               UnitTestTreeUtil.assertPart(testResult1, basePath\r
+                               + "slc.test1/reference2", 0, TestStatus.PASSED,\r
+                               "Values matched for key 'reference2'");\r
+               UnitTestTreeUtil.assertPart(testResult1, basePath\r
+                               + "slc.test1/var", 0, TestStatus.PASSED,\r
+                               "Values matched for key 'var'");\r
+               UnitTestTreeUtil.assertPart(testResult1, basePath\r
+                               + "slc.test1/varIntern", 0, TestStatus.PASSED,\r
+                               "Values matched for key 'varIntern'");\r
+               UnitTestTreeUtil.assertPart(testResult1, basePath\r
+                               + "slc.test1/varExtern", 0, TestStatus.PASSED,\r
+                               "Values matched for key 'varExtern'");\r
+               UnitTestTreeUtil.assertPart(testResult1, basePath\r
+                               + "slc.test1/greeting", 0, TestStatus.PASSED,\r
+                               "Values matched for key 'greeting'");\r
+\r
+       }\r
+\r
+       public void testBaseContext() throws Exception {\r
+               TestResultDao<TreeTestResult> testResultDao = runAnt(\r
+                               "root/Context/build.xml", "testBaseContext");\r
+\r
+               NumericTRId numericTRId = new NumericTRId();\r
+               numericTRId.setValue(1l);\r
+               TreeTestResult testResult1 = (TreeTestResult) testResultDao\r
+                               .getTestResult(numericTRId);\r
+\r
+               String basePath = "/root/Context/testBaseContext/";\r
+               UnitTestTreeUtil.assertPart(testResult1, basePath\r
+                               + "slc.test0/reference", 0, TestStatus.PASSED,\r
+                               "Values matched for key 'reference'");\r
+               UnitTestTreeUtil.assertPart(testResult1, basePath\r
+                               + "slc.test1/reference", 0, TestStatus.PASSED,\r
+                               "Values matched for key 'reference'");\r
+               UnitTestTreeUtil.assertPart(testResult1, basePath\r
+                               + "slc.test1/varIntern", 0, TestStatus.PASSED,\r
+                               "Values matched for key 'varIntern'");\r
+\r
+       }\r
+\r
+       private TestResultDao<TreeTestResult> runAnt(String antFileRelPath,\r
+                       String target) throws Exception {\r
+               String slcBase = System.getProperty("it.slc.base", "exampleSlcAppli");\r
+               File slcBaseDir = new File(slcBase).getCanonicalFile();\r
+               log.info("SLC base: " + slcBaseDir);\r
+\r
+               File antFile = new File(slcBaseDir.getPath() + File.separator\r
+                               + antFileRelPath);\r
+               Project p = AntRegistryUtil.runAll(antFile, target);\r
+\r
+               ApplicationContext context = (ApplicationContext) p\r
+                               .getReference(SlcProjectHelper.REF_ROOT_CONTEXT);\r
+\r
+               TestResultDao<TreeTestResult> testResultDao = (TestResultDao<TreeTestResult>) context\r
+                               .getBean("testResultDao");\r
+               return testResultDao;\r
+\r
+       }\r
+}\r
index cdc8fd59654cb83a17d613ae1b8d7c44bf02cca7..c8fb1d62e699cfd1b9ffaea7ba4a9bc56870ae92 100644 (file)
@@ -12,13 +12,11 @@ import org.apache.tools.ant.Project;
 \r
 import org.argeo.slc.ant.AntRegistryUtil;\r
 import org.argeo.slc.ant.SlcProjectHelper;\r
-import org.argeo.slc.core.structure.tree.TreeSPath;\r
 import org.argeo.slc.core.test.NumericTRId;\r
-import org.argeo.slc.core.test.SimpleResultPart;\r
 import org.argeo.slc.core.test.TestStatus;\r
-import org.argeo.slc.core.test.tree.PartSubList;\r
 import org.argeo.slc.core.test.tree.TreeTestResult;\r
 import org.argeo.slc.dao.test.TestResultDao;\r
+import org.argeo.slc.unit.test.tree.UnitTestTreeUtil;\r
 \r
 /** High level tests for SLC Ant. */\r
 public class ExampleIntegrationTest extends TestCase {\r
@@ -51,39 +49,29 @@ public class ExampleIntegrationTest extends TestCase {
                TreeTestResult testResult1 = (TreeTestResult) testResultDao\r
                                .getTestResult(numericTRId);\r
                // assertPart(testResult1, "", 0, TestStatus.PASSED, "");\r
-               assertPart(\r
-                               testResult1,\r
-                               "/root/Category1/SubCategory2/testComplex/slc.test0/0",\r
-                               0,\r
-                               TestStatus.PASSED,\r
-                               "Sub task with path /root/Category1/SubCategory2/testComplex/slc.test0/0 executed");\r
-               assertPart(testResult1,\r
+               UnitTestTreeUtil\r
+                               .assertPart(\r
+                                               testResult1,\r
+                                               "/root/Category1/SubCategory2/testComplex/slc.test0/0",\r
+                                               0,\r
+                                               TestStatus.PASSED,\r
+                                               "Sub task with path /root/Category1/SubCategory2/testComplex/slc.test0/0 executed");\r
+               UnitTestTreeUtil.assertPart(testResult1,\r
                                "/root/Category1/SubCategory2/testSimple/slc.test0", 1,\r
                                TestStatus.FAILED,\r
                                "Compare nato-expected.txt with nato-reached.txt");\r
-               assertPart(testResult1,\r
+               UnitTestTreeUtil.assertPart(testResult1,\r
                                "/root/Category1/SubCategory2/testError/slc.test0", 0,\r
                                TestStatus.ERROR, "Execute example appli");\r
 \r
-               // Context\r
-               assertPart(testResult1,\r
-                               "/root/Category1/SubCategory2/testContext/slc.test1/reference",\r
-                               0, TestStatus.PASSED, "Values matched for key 'reference'");\r
-               assertPart(testResult1,\r
-                               "/root/Category1/SubCategory2/testContext/slc.test1/varIntern",\r
-                               0, TestStatus.PASSED, "Values matched for key 'varIntern'");\r
-               assertPart(testResult1,\r
-                               "/root/Category1/SubCategory2/testContext/slc.test1/varExtern",\r
-                               0, TestStatus.PASSED, "Values matched for key 'varExtern'");\r
-\r
                numericTRId.setValue(2l);\r
                TreeTestResult testResult2 = (TreeTestResult) testResultDao\r
                                .getTestResult(numericTRId);\r
-               assertPart(testResult2,\r
+               UnitTestTreeUtil.assertPart(testResult2,\r
                                "/root/Category1/SubCategory2/testSimple/slc.test2", 1,\r
                                TestStatus.PASSED,\r
                                "Compare eu-reform-expected.txt with eu-reform-reached.txt");\r
-               assertPart(testResult2,\r
+               UnitTestTreeUtil.assertPart(testResult2,\r
                                "/root/Category1/SubCategory2/testSimple/slc.test3", 1,\r
                                TestStatus.FAILED,\r
                                "Compare eu-reform-expected.txt with eu-reform-reached.txt");\r
@@ -94,12 +82,4 @@ public class ExampleIntegrationTest extends TestCase {
                assertTrue(new File(reportDirPath + "slc-result-2.html").exists());\r
        }\r
 \r
-       private void assertPart(TreeTestResult testResult, String pathStr,\r
-                       int index, Integer status, String message) {\r
-               TreeSPath path = TreeSPath.parseToCreatePath(pathStr);\r
-               PartSubList list = testResult.getResultParts().get(path);\r
-               SimpleResultPart part = (SimpleResultPart) list.getParts().get(index);\r
-               assertEquals(status, part.getStatus());\r
-               assertEquals(message, part.getMessage());\r
-       }\r
 }\r