From b61c80746dd5df73899390826e197d2656784f91 Mon Sep 17 00:00:00 2001 From: mclarke Date: Fri, 18 Apr 2014 21:00:38 +0000 Subject: [PATCH] Test improvements: convert to JUnit4, improved error testing and remove sleeps git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@1588563 13f79535-47bb-0310-9956-ffa450edef68 --- WHATSNEW | 10 + manual/Types/selectors-program.html | 78 +-- .../tutorial-tasks-filesets-properties.html | 40 +- manual/tutorial-writing-tasks.html | 83 +-- src/etc/testcases/taskdefs/copy.xml | 5 +- src/etc/testcases/taskdefs/jar.xml | 2 - .../taskdefs/optional/antlr/antlr.xml | 2 - .../taskdefs/optional/depend/depend.xml | 26 +- src/etc/testcases/taskdefs/optional/junit.xml | 9 +- .../taskdefs/optional/replaceregexp.xml | 2 +- .../taskdefs/optional/unix/symlink.xml | 2 +- src/etc/testcases/taskdefs/uptodate.xml | 9 +- src/etc/testcases/taskdefs/zip.xml | 1 - src/etc/testcases/types/selectors.xml | 3 - .../junit/org/apache/tools/ant/AntAssert.java | 72 +++ .../ant/AntClassLoaderDelegationTest.java | 19 +- .../tools/ant/AntClassLoaderPerformance.java | 5 +- .../apache/tools/ant/AntClassLoaderTest.java | 114 ++-- .../org/apache/tools/ant/BuildFileRule.java | 318 +++++++++++ .../org/apache/tools/ant/BuildFileTest.java | 3 + .../junit/org/apache/tools/ant/CaseTest.java | 32 +- .../apache/tools/ant/DefaultLoggerTest.java | 13 +- .../tools/ant/DirectoryScannerTest.java | 192 ++++--- .../apache/tools/ant/DispatchTaskTest.java | 24 +- .../org/apache/tools/ant/ExecutorTest.java | 56 +- .../apache/tools/ant/ExtendedTaskdefTest.java | 61 +- .../org/apache/tools/ant/FileUtilities.java | 88 +++ .../org/apache/tools/ant/ImmutableTest.java | 56 +- .../org/apache/tools/ant/IncludeTest.java | 96 ++-- .../tools/ant/IntrospectionHelperTest.java | 94 +++- .../org/apache/tools/ant/LoaderRefTest.java | 32 +- .../org/apache/tools/ant/LocationTest.java | 46 +- .../apache/tools/ant/MockBuildListener.java | 9 +- .../tools/ant/ProjectComponentTest.java | 10 +- .../ant/ProjectHelperRepositoryTest.java | 16 +- .../org/apache/tools/ant/ProjectTest.java | 92 ++- .../tools/ant/PropertyExpansionTest.java | 27 +- .../apache/tools/ant/PropertyFileCLITest.java | 10 +- .../apache/tools/ant/TaskContainerTest.java | 39 +- .../apache/tools/ant/TopLevelTaskTest.java | 30 +- .../apache/tools/ant/UnknownElementTest.java | 31 +- .../tools/ant/filters/ConcatFilterTest.java | 82 ++- .../tools/ant/filters/DynamicFilterTest.java | 67 +-- .../tools/ant/filters/EscapeUnicodeTest.java | 32 +- .../tools/ant/filters/HeadTailTest.java | 126 +++-- .../tools/ant/filters/LineContainsTest.java | 37 +- .../tools/ant/filters/NoNewLineTest.java | 19 +- .../tools/ant/filters/ReplaceTokensTest.java | 40 +- .../ant/filters/StripJavaCommentsTest.java | 33 +- .../tools/ant/filters/TokenFilterTest.java | 297 +++++----- .../apache/tools/ant/launch/LocatorTest.java | 53 +- .../tools/ant/loader/AntClassLoader5Test.java | 14 +- .../ant/taskdefs/AbstractCvsTaskTest.java | 43 +- .../taskdefs/AntLikeTasksAtTopLevelTest.java | 24 +- .../tools/ant/taskdefs/AntStructureTest.java | 41 +- .../apache/tools/ant/taskdefs/AntTest.java | 247 +++++--- .../apache/tools/ant/taskdefs/AntlibTest.java | 50 +- .../tools/ant/taskdefs/AvailableTest.java | 182 ++++-- .../tools/ant/taskdefs/BUnzip2Test.java | 38 +- .../apache/tools/ant/taskdefs/BZip2Test.java | 42 +- .../tools/ant/taskdefs/BasenameTest.java | 73 ++- .../tools/ant/taskdefs/CVSPassTest.java | 75 ++- .../tools/ant/taskdefs/CallTargetTest.java | 52 +- .../tools/ant/taskdefs/ChecksumTest.java | 66 ++- .../apache/tools/ant/taskdefs/ConcatTest.java | 197 ++++--- .../tools/ant/taskdefs/ConditionTest.java | 282 +++++++--- .../apache/tools/ant/taskdefs/CopyTest.java | 208 ++++--- .../tools/ant/taskdefs/CopydirTest.java | 67 ++- .../tools/ant/taskdefs/CopyfileTest.java | 73 ++- .../ant/taskdefs/DefaultExcludesTest.java | 42 +- .../apache/tools/ant/taskdefs/DeleteTest.java | 71 ++- .../tools/ant/taskdefs/DeltreeTest.java | 31 +- .../tools/ant/taskdefs/DirnameTest.java | 70 ++- .../tools/ant/taskdefs/DynamicTest.java | 28 +- .../apache/tools/ant/taskdefs/EchoTest.java | 34 +- .../tools/ant/taskdefs/EchoXMLTest.java | 42 +- .../tools/ant/taskdefs/ExecTaskTest.java | 62 +- .../tools/ant/taskdefs/ExecuteJavaTest.java | 21 +- .../ant/taskdefs/ExecuteWatchdogTest.java | 31 +- .../apache/tools/ant/taskdefs/FailTest.java | 166 ++++-- .../apache/tools/ant/taskdefs/FilterTest.java | 71 ++- .../tools/ant/taskdefs/FixCrLfTest.java | 129 +++-- .../apache/tools/ant/taskdefs/GUnzipTest.java | 54 +- .../apache/tools/ant/taskdefs/GetTest.java | 79 ++- .../apache/tools/ant/taskdefs/GzipTest.java | 69 ++- .../apache/tools/ant/taskdefs/ImportTest.java | 152 ++--- .../ant/taskdefs/InitializeClassTest.java | 47 +- .../apache/tools/ant/taskdefs/InputTest.java | 100 ++-- .../apache/tools/ant/taskdefs/JarTest.java | 188 +++++-- .../apache/tools/ant/taskdefs/JavaTest.java | 232 +++++--- .../apache/tools/ant/taskdefs/JavacTest.java | 44 +- .../tools/ant/taskdefs/JavadocTest.java | 123 ++-- .../tools/ant/taskdefs/LoadFileTest.java | 111 ++-- .../tools/ant/taskdefs/MacroDefTest.java | 172 ++++-- .../tools/ant/taskdefs/MakeUrlTest.java | 76 ++- .../ant/taskdefs/ManifestClassPathTest.java | 222 +++++--- .../tools/ant/taskdefs/ManifestTest.java | 194 +++++-- .../apache/tools/ant/taskdefs/MkdirTest.java | 39 +- .../apache/tools/ant/taskdefs/MoveTest.java | 129 +++-- .../tools/ant/taskdefs/MultiMapTest.java | 35 +- .../apache/tools/ant/taskdefs/NiceTest.java | 49 +- .../tools/ant/taskdefs/ParallelTest.java | 103 ++-- .../tools/ant/taskdefs/PathConvertTest.java | 29 +- .../tools/ant/taskdefs/PreSetDefTest.java | 81 ++- .../ant/taskdefs/ProcessDestroyerTest.java | 69 +-- .../tools/ant/taskdefs/PropertyTest.java | 102 ++-- .../ant/taskdefs/ProtectedJarMethodsTest.java | 31 +- .../tools/ant/taskdefs/RecorderTest.java | 63 ++- .../apache/tools/ant/taskdefs/RenameTest.java | 65 ++- .../tools/ant/taskdefs/ReplaceTest.java | 121 +++- .../tools/ant/taskdefs/RmicAdvancedTest.java | 196 ++++--- .../apache/tools/ant/taskdefs/RmicTest.java | 15 +- .../tools/ant/taskdefs/SQLExecTest.java | 39 +- .../tools/ant/taskdefs/SignJarTest.java | 65 ++- .../apache/tools/ant/taskdefs/SleepTest.java | 55 +- .../apache/tools/ant/taskdefs/StyleTest.java | 153 ++--- .../apache/tools/ant/taskdefs/SubAntTest.java | 71 ++- .../apache/tools/ant/taskdefs/SyncTest.java | 108 ++-- .../apache/tools/ant/taskdefs/TStampTest.java | 21 +- .../apache/tools/ant/taskdefs/TarTest.java | 116 ++-- .../tools/ant/taskdefs/TaskdefTest.java | 80 ++- .../tools/ant/taskdefs/TaskdefsTest.java | 2 +- .../tools/ant/taskdefs/TestProcess.java | 14 +- .../apache/tools/ant/taskdefs/TouchTest.java | 66 ++- .../tools/ant/taskdefs/TypeAdapterTest.java | 50 +- .../tools/ant/taskdefs/TypedefTest.java | 87 ++- .../apache/tools/ant/taskdefs/UntarTest.java | 68 ++- .../apache/tools/ant/taskdefs/UnzipTest.java | 155 +++-- .../tools/ant/taskdefs/UpToDateTest.java | 47 +- .../apache/tools/ant/taskdefs/WarTest.java | 22 +- .../tools/ant/taskdefs/WhichResourceTest.java | 33 +- .../tools/ant/taskdefs/XmlPropertyTest.java | 131 +++-- .../apache/tools/ant/taskdefs/XmlnsTest.java | 53 +- .../tools/ant/taskdefs/ZipExtraFieldTest.java | 10 +- .../apache/tools/ant/taskdefs/ZipTest.java | 176 ++++-- .../compilers/DefaultCompilerAdapterTest.java | 18 +- .../taskdefs/condition/AntVersionTest.java | 29 +- .../ant/taskdefs/condition/ContainsTest.java | 11 +- .../ant/taskdefs/condition/EqualsTest.java | 12 +- .../ant/taskdefs/condition/HttpTest.java | 51 +- .../ant/taskdefs/condition/IsFailureTest.java | 21 +- .../condition/IsFileSelectedTest.java | 47 +- .../taskdefs/condition/IsReachableTest.java | 84 ++- .../taskdefs/condition/IsReferenceTest.java | 52 +- .../ant/taskdefs/condition/IsSignedTest.java | 31 +- .../condition/ParserSupportsTest.java | 83 ++- .../ant/taskdefs/condition/TypeFoundTest.java | 56 +- .../tools/ant/taskdefs/condition/XorTest.java | 39 +- .../taskdefs/cvslib/ChangeLogParserTest.java | 8 +- .../taskdefs/cvslib/ChangeLogWriterTest.java | 6 +- .../ant/taskdefs/email/EmailAddressTest.java | 30 +- .../ant/taskdefs/email/EmailTaskTest.java | 34 +- .../tools/ant/taskdefs/email/MessageTest.java | 14 +- .../ant/taskdefs/optional/ANTLRTest.java | 132 +++-- .../optional/AbstractXSLTLiaisonTest.java | 18 +- .../optional/BeanShellScriptTest.java | 24 +- .../taskdefs/optional/EchoPropertiesTest.java | 184 +++--- .../ant/taskdefs/optional/JavahTest.java | 34 +- .../tools/ant/taskdefs/optional/JspcTest.java | 99 ++-- .../taskdefs/optional/Native2AsciiTest.java | 31 +- .../taskdefs/optional/PropertyFileTest.java | 113 ++-- .../tools/ant/taskdefs/optional/PvcsTest.java | 49 +- .../taskdefs/optional/ReplaceRegExpTest.java | 83 +-- .../taskdefs/optional/RhinoReferenceTest.java | 23 +- .../taskdefs/optional/RhinoScriptTest.java | 45 +- .../tools/ant/taskdefs/optional/RpmTest.java | 13 +- .../taskdefs/optional/SchemaValidateTest.java | 93 +-- .../taskdefs/optional/TraXLiaisonTest.java | 29 +- .../optional/XmlValidateCatalogTest.java | 38 +- .../taskdefs/optional/XmlValidateTest.java | 98 ++-- .../tools/ant/taskdefs/optional/XsltTest.java | 65 +-- .../taskdefs/optional/depend/DependTest.java | 107 +++- .../taskdefs/optional/i18n/TranslateTest.java | 81 ++- .../taskdefs/optional/image/ImageTest.java | 78 ++- .../optional/jdepend/JDependTest.java | 58 +- .../optional/junit/BatchTestTest.java | 109 ++-- .../taskdefs/optional/junit/DOMUtilTest.java | 10 +- .../optional/junit/JUnitClassLoaderTest.java | 11 +- .../optional/junit/JUnitReportTest.java | 146 ++--- .../optional/junit/JUnitTaskTest.java | 372 ++++++------ .../optional/junit/JUnitTestListenerTest.java | 103 ++-- .../optional/junit/JUnitTestRunnerTest.java | 48 +- .../junit/JUnitVersionHelperTest.java | 28 +- .../taskdefs/optional/junit/NoVmCrash.java | 9 +- .../ant/taskdefs/optional/junit/Printer.java | 8 +- .../ant/taskdefs/optional/junit/Sleeper.java | 17 +- .../optional/junit/TearDownOnVmCrashTest.java | 29 +- .../ant/taskdefs/optional/junit/VmCrash.java | 9 +- .../XMLFormatterWithCDATAOnSystemOut.java | 30 +- .../junit/XMLResultAggregatorTest.java | 15 +- .../ant/taskdefs/optional/net/FTPTest.java | 528 +++++++++--------- .../optional/script/ScriptDefTest.java | 93 +-- .../ant/taskdefs/optional/sos/SOSTest.java | 71 ++- .../optional/splash/SplashScreenTest.java | 12 +- .../ant/taskdefs/optional/ssh/ScpTest.java | 36 +- .../taskdefs/optional/unix/SymlinkTest.java | 401 ++++++------- .../ant/taskdefs/optional/vss/MSVSSTest.java | 98 ++-- .../tools/ant/types/AbstractFileSetTest.java | 15 +- .../apache/tools/ant/types/AddTypeTest.java | 91 ++- .../tools/ant/types/AssertionsTest.java | 81 ++- .../tools/ant/types/CommandlineJavaTest.java | 25 +- .../tools/ant/types/CommandlineTest.java | 23 +- .../tools/ant/types/DescriptionTest.java | 41 +- .../apache/tools/ant/types/DirSetTest.java | 9 +- .../ant/types/EnumeratedAttributeTest.java | 22 +- .../apache/tools/ant/types/FileListTest.java | 88 +-- .../apache/tools/ant/types/FileSetTest.java | 3 - .../apache/tools/ant/types/FilterSetTest.java | 130 +++-- .../tools/ant/types/FlexIntegerTest.java | 31 +- .../apache/tools/ant/types/MapperTest.java | 62 +- .../org/apache/tools/ant/types/PathTest.java | 32 +- .../tools/ant/types/PatternSetTest.java | 21 +- .../tools/ant/types/PermissionsTest.java | 28 +- .../org/apache/tools/ant/types/PolyTest.java | 34 +- .../ant/types/RedirectorElementTest.java | 56 +- .../tools/ant/types/ResourceOutputTest.java | 54 +- .../tools/ant/types/TarFileSetTest.java | 10 +- .../ant/types/XMLCatalogBuildFileTest.java | 48 +- .../tools/ant/types/XMLCatalogTest.java | 211 +++---- .../tools/ant/types/ZipFileSetTest.java | 11 +- .../ant/types/mappers/GlobMapperTest.java | 22 +- .../mappers/RegexpPatternMapperTest.java | 24 +- .../ant/types/optional/ScriptMapperTest.java | 27 +- .../types/optional/ScriptSelectorTest.java | 54 +- .../optional/depend/ClassFileSetTest.java | 49 +- .../ant/types/resources/FileResourceTest.java | 17 +- .../ant/types/resources/JavaResourceTest.java | 28 +- .../resources/LazyResourceCollectionTest.java | 14 +- .../types/resources/MultiRootFileSetTest.java | 10 +- .../ant/types/resources/ResourceListTest.java | 52 +- .../ant/types/resources/TarResourceTest.java | 34 +- .../ant/types/selectors/BaseSelectorRule.java | 125 +++++ .../ant/types/selectors/BaseSelectorTest.java | 4 +- .../types/selectors/ContainsRegexpTest.java | 70 +-- .../types/selectors/ContainsSelectorTest.java | 107 ++-- .../ant/types/selectors/DateSelectorTest.java | 211 ++++--- .../types/selectors/DependSelectorTest.java | 234 ++++---- .../types/selectors/DepthSelectorTest.java | 102 ++-- .../types/selectors/FilenameSelectorTest.java | 57 +- .../types/selectors/ModifiedSelectorTest.java | 446 ++++++++------- .../types/selectors/PresentSelectorTest.java | 136 ++--- .../types/selectors/SignedSelectorTest.java | 27 +- .../ant/types/selectors/SizeSelectorTest.java | 163 +++--- .../types/selectors/TokenizedPatternTest.java | 11 +- .../ant/types/selectors/TypeSelectorTest.java | 55 +- .../tools/ant/util/Base64ConverterTest.java | 13 +- .../tools/ant/util/ClasspathUtilsTest.java | 16 +- .../tools/ant/util/CollectionUtilsTest.java | 11 +- .../tools/ant/util/DOMElementWriterTest.java | 32 +- .../apache/tools/ant/util/DateUtilsTest.java | 17 +- .../tools/ant/util/DeweyDecimalTest.java | 4 +- .../apache/tools/ant/util/FileUtilsTest.java | 58 +- .../tools/ant/util/GlobPatternMapperTest.java | 16 +- .../apache/tools/ant/util/JAXPUtilsTest.java | 10 +- .../tools/ant/util/JavaEnvUtilsTest.java | 161 +++--- .../util/LayoutPreservingPropertiesTest.java | 21 +- .../ant/util/LazyFileOutputStreamTest.java | 18 +- .../util/LineOrientedOutputStreamTest.java | 31 +- .../tools/ant/util/LinkedHashtableTest.java | 23 +- .../tools/ant/util/LoaderUtilsTest.java | 12 +- .../tools/ant/util/PackageNameMapperTest.java | 9 +- .../tools/ant/util/ReaderInputStreamTest.java | 27 +- .../tools/ant/util/ResourceUtilsTest.java | 14 +- .../tools/ant/util/StringUtilsTest.java | 32 +- .../tools/ant/util/SymlinkUtilsTest.java | 13 +- .../ant/util/UnPackageNameMapperTest.java | 8 +- .../tools/ant/util/UnicodeUtilTest.java | 7 +- .../apache/tools/ant/util/VectorSetTest.java | 44 +- .../tools/ant/util/XMLFragmentTest.java | 25 +- .../ant/util/facade/FacadeTaskHelperTest.java | 13 +- .../ImplementationSpecificArgumentTest.java | 12 +- .../apache/tools/bzip2/CBZip2StreamTest.java | 13 +- .../apache/tools/mail/MailMessageTest.java | 139 ++--- .../org/apache/tools/tar/TarEntryTest.java | 9 +- .../apache/tools/tar/TarOutputStreamTest.java | 7 +- .../apache/tools/tar/TarRoundTripTest.java | 17 +- .../apache/tools/zip/AsiExtraFieldTest.java | 18 +- .../apache/tools/zip/ExtraFieldUtilsTest.java | 19 +- .../apache/tools/zip/UTF8ZipFilesTest.java | 19 +- .../org/apache/tools/zip/ZipEncodingTest.java | 19 +- .../org/apache/tools/zip/ZipEntryTest.java | 18 +- .../org/apache/tools/zip/ZipLongTest.java | 19 +- .../apache/tools/zip/ZipOutputStreamTest.java | 26 +- .../org/apache/tools/zip/ZipShortTest.java | 17 +- .../junit/org/example/junit/Timeout.java | 7 +- .../org/example/junit/XmlParserTest.java | 12 +- 286 files changed, 11159 insertions(+), 7183 deletions(-) create mode 100644 src/tests/junit/org/apache/tools/ant/AntAssert.java create mode 100644 src/tests/junit/org/apache/tools/ant/BuildFileRule.java create mode 100644 src/tests/junit/org/apache/tools/ant/FileUtilities.java create mode 100644 src/tests/junit/org/apache/tools/ant/types/selectors/BaseSelectorRule.java diff --git a/WHATSNEW b/WHATSNEW index 25d2d6540..c1fafc065 100644 --- a/WHATSNEW +++ b/WHATSNEW @@ -26,6 +26,16 @@ Changes that could break older environments: might lead to blocking or other undefined behavior. Bugzilla Report 56149 + * BuildFileTest and BaseSelectorTest have both been deprecated in + favour of BuildFileRule and BaseSelectorRule respectively, and the + tests that previously extended these base tests have been converted to + JUnit 4 tests using the new "rule"s. Any external test that sub-classed + a test in the Ant workspace, rather than BuildFileTest, will need + changed to either use JUnit4's annotations, or be modified to + extend BuildFileTest directly. This will not affect any tests that are + being executed by Ant's junit or batchtest tasks that are not specifically + testing Ant's code. + Fixed bugs: ----------- diff --git a/manual/Types/selectors-program.html b/manual/Types/selectors-program.html index 8e16b0338..074a54263 100644 --- a/manual/Types/selectors-program.html +++ b/manual/Types/selectors-program.html @@ -140,78 +140,58 @@

For a robust component (and selectors are (Project)Components) tests are necessary. For testing Tasks we use JUnit TestCases - more specific - org.apache.tools.ant.BuildFileTest extends junit.framework.TestCase. + org.apache.tools.ant.BuildFileRule extends org.junit.rules.ExternalResource. Some of its features like configure the (test) project by reading its buildfile and - execute targets we need for selector tests also. Therefore we use that BuildFileTest. + execute targets we need for selector tests also. Therefore we use that BuildFileRule. But testing selectors requires some more work: having a set of files, instantiate and configure the selector, check the selection work and more. Because we usually extend BaseExtendSelector its features have to be tested also (e.g. setError()).

-

That's why we have a base class for doing our selector tests: - org.apache.tools.ant.types.selectors.BaseSelectorTest.

+

That's why we have a test rule for doing our selector tests: + org.apache.tools.ant.types.selectors.BaseSelectorRule.

-

This class extends TestCase and therefore can included in the set of Ant's - unit tests. It holds an instance of preconfigured BuildFileTest. Configuration - is done by parsing the src/etc/testcases/types/selectors.xml. BaseSelectorTest +

This class extends ExternalResource and therefore can included in the set of Ant's + unit tests. It holds an instance of preconfigured BuildFileRule. Configuration + is done by parsing the src/etc/testcases/types/selectors.xml. BaseSelectorRule then gives us helper methods for handling multiple selections.

Because the term "testcase" or "testenvironment" are so often used, this - special testenvironment got a new name: bed. Like you initialize the - test environment by calling setUp() and cleaning by calling tearDown() (or like - to make your bed before go sleeping) you have to do that work with your - bed by calling makeBed() respective cleanupBed().

+ special testenvironment got a new name: bed. The setup and cleanup of + the bed is all handled by the BaseSelectorRule so any test only has to handle + the actual test scenarios

-

A usual test scenario is

    -
  1. make the bed
  2. +

    A usual test scenario is:

    +
    1. instantiate the selector
    2. configure the selector
    3. let the selector do some work
    4. verify the work
    5. -
    6. clean the bed
    7. -
    -

    +
+ -

For common way of instantiation you have to override the getInstance() - simply by returning a new object of your selector. For easier "selection and verification work" - BaseSelectorTest provides the method performTests() which - iterates over all files (and directories) in the String array filenames - and checks whether the given selector returns the expected result. If an error - occurred (especially the selector does not return the expected result) the test - fails and the failing filenames are logged.

An example test would be:

 package org.apache.tools.ant.types.selectors;
 
-public class MySelectorTest extends BaseSelectorTest {
-
-    public MySelectorTest(String name) {
-        super(name);
-    }
+public class MySelectorTest {
 
-    public BaseSelector getInstance() {
-        return new MySelector();
-    }
+    @Rule
+    public final BaseSelectorRule selectorRule = new BaseSelectorRule();
 
+    @Test
     public void testCase1() {
-        try {
-            // initialize test environment 'bed'
-            makeBed();
-
-            // Configure the selector
-            MySelector s = (MySelector)getSelector();
-            s.addParam("key1", "value1");
-            s.addParam("key2", "value2");
-            s.setXX(true);
-            s.setYY("a value");
-
-            // do the tests
-            performTests(s, "FTTTTTTTTTTT");  // First is not selected - rest is
-
-        } finally {
-            // cleanup the environment
-            cleanupBed();
-        }
+
+
+        // Configure the selector
+        MySelector s = new MySelector();
+        s.addParam("key1", "value1");
+        s.addParam("key2", "value2");
+        s.setXX(true);
+        s.setYY("a value");
+
+        // do the tests
+        assertEquals("FTTTTTTTT", selectorRule.selectionString(s));
     }
 }
     
diff --git a/manual/tutorial-tasks-filesets-properties.html b/manual/tutorial-tasks-filesets-properties.html index 5ba08f6ef..fdbe1be5b 100644 --- a/manual/tutorial-tasks-filesets-properties.html +++ b/manual/tutorial-tasks-filesets-properties.html @@ -135,20 +135,28 @@ to them, sorry :-)

we can call that from our testcase:
-import org.apache.tools.ant.BuildFileTest;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.Before;
+import org.junit.Assert;
+import org.apache.tools.ant.BuildFileRule;
 
-public class FindTest extends BuildFileTest {
 
-    public FindTest(String name) {
-        super(name);
-    }
+public class FindTest {
+
+    @Rule
+    public final BuildFileRule buildRule = new BuildFileRule();
 
+
+    @Before
     public void setUp() {
         configureProject("build.xml");
     }
 
+    @Test
     public void testSimple() {
-        expectLog("use.simple", "test-value");
+        buildRule.executeTarget("useSimgle");
+        Assert.assertEquals("test-value", buildRule.getLog());
     }
 }
 
@@ -211,10 +219,14 @@ Maybe you find some more testcases. But this is enough for now.
For each of these points we create a testXX method.

-public class FindTest extends BuildFileTest {
+public class FindTest {
+
+    @Rule
+    public final BuildFileRule buildRule = new BuildFileRule();
 
     ... // constructor, setUp as above
 
+    @Test
     public void testMissingFile() {
         Find find = new Find();
         try {
@@ -227,6 +239,7 @@ public class FindTest extends BuildFileTest {
         }
     }
 
+    @Test
     public void testMissingLocation() {
         Find find = new Find();
         find.setFile("ant.jar");
@@ -238,6 +251,7 @@ public class FindTest extends BuildFileTest {
         }
     }
 
+    @Test
     public void testMissingFileset() {
         Find find = new Find();
         find.setFile("ant.jar");
@@ -250,15 +264,17 @@ public class FindTest extends BuildFileTest {
         }
     }
 
+    @Test
     public void testFileNotPresent() {
-        executeTarget("testFileNotPresent");
-        String result = getProject().getProperty("location.ant-jar");
+        buildRule.executeTarget("testFileNotPresent");
+        String result = buildRule.getProject().getProperty("location.ant-jar");
         assertNull("Property set to wrong value.", result);
     }
 
+    @Test
     public void testFilePresent() {
-        executeTarget("testFilePresent");
-        String result = getProject().getProperty("location.ant-jar");
+        buildRule.executeTarget("testFilePresent");
+        String result = buildRule.getProject().getProperty("location.ant-jar");
         assertNotNull("Property not set.", result);
         assertTrue("Wrong file found.", result.endsWith("ant.jar"));
     }
@@ -906,7 +922,7 @@ entry. For both we need some information:

attachments - all files needed to apply the path + all files needed to apply the path Archive containing a patch with the new and modified resources diff --git a/manual/tutorial-writing-tasks.html b/manual/tutorial-writing-tasks.html index c4881e949..c3b8a6a82 100644 --- a/manual/tutorial-writing-tasks.html +++ b/manual/tutorial-writing-tasks.html @@ -17,8 +17,7 @@ Tutorial: Writing Tasks - - +

Tutorial: Writing Tasks

@@ -596,12 +595,9 @@ Next step: test ...

Test the Task

We have written a test already: the use.* tasks in the buildfile. But its difficult to test that automatically. Common (and in Ant) used is JUnit for -that. For testing tasks Ant provides a baseclass org.apache.tools.ant.BuildFileTest. -This class extends junit.framework.TestCase and can therefore be integrated -into the unit tests. But this class provides some for testing tasks useful methods: -initialize Ant, load a buildfile, execute targets, -expecting BuildExceptions with a specified text, expect a special text -in the output log ...

+that. For testing tasks Ant provides a JUnit Rule org.apache.tools.ant.BuildFileRule. +This class provides some for testing tasks useful methods: +initialize Ant, load a buildfile, execute targets, capturing debug and run logs ...

In Ant it is usual that the testcase has the same name as the task with a prepending Test, therefore we will create a file HelloWorldTest.java. Because we @@ -677,49 +673,68 @@ and <junitreport>. So we add to the buildfile:

...
-

Back to the src/HelloWorldTest.java. We create a class extending -BuildFileTest with String-constructor (JUnit-standard), a setUp() -method initializing Ant and for each testcase (targets use.*) a testXX() -method invoking that target.

+

Back to the src/HelloWorldTest.java. We create a class with a public +BuildFileRule field annotated with JUnit's @Rule annotation. As per +conventional JUnit4 tests, this class should have no constructors, or a default no-args +constructor, setup methods should be annotated with @Before, tear down methods +annotated with @After and any test method annotated with @Test.

-import org.apache.tools.ant.BuildFileTest;
+import org.apache.tools.ant.BuildFileRule;
+import org.junit.Assert;
+import org.junit.Test;
+import org.junit.Before;
+import org.junit.Rule;
+import org.apache.tools.ant.AntAssert;
+import org.apache.tools.ant.BuildException;
 
-public class HelloWorldTest extends BuildFileTest {
+public class HelloWorldTest {
 
-    public HelloWorldTest(String s) {
-        super(s);
-    }
+    @Rule
+    public final BuildFileRule buildRule = new BuildFileRule();
 
+    @Before
     public void setUp() {
         // initialize Ant
-        configureProject("build.xml");
+        buildRule.configureProject("build.xml");
     }
 
+    @Test
     public void testWithout() {
-        executeTarget("use.without");
-        assertEquals("Message was logged but should not.", getLog(), "");
+        buildRule.executeTarget("use.without");
+        assertEquals("Message was logged but should not.", buildRule.getLog(), "");
     }
 
     public void testMessage() {
         // execute target 'use.nestedText' and expect a message
         // 'attribute-text' in the log
-        expectLog("use.message", "attribute-text");
+        buildRule.executeTarget("use.message");
+        Assert.assertEquals("attribute-text", buildRule.getLog());
     }
 
+    @Test
     public void testFail() {
         // execute target 'use.fail' and expect a BuildException
         // with text 'Fail requested.'
-        expectBuildException("use.fail", "Fail requested.");
+        try {
+           buildRule.executeTarget("use.fail");
+           fail("BuildException should have been thrown as task was set to fail");
+        } catch (BuildException ex) {
+            Assert.assertEquals("fail requested", ex.getMessage());
+        }
+
     }
 
+    @Test
     public void testNestedText() {
-        expectLog("use.nestedText", "nested-text");
+        buildRule.executeTarget("use.nestedText");
+        Assert.assertEquals("nested-text", buildRule.getLog());
     }
 
+    @Test
     public void testNestedElement() {
-        executeTarget("use.nestedElement");
-        assertLogContaining("Nested Element 1");
-        assertLogContaining("Nested Element 2");
+        buildRule.executeTarget("use.nestedElement");
+        AntAssert.assertContains("Nested Element 1", buildRule.getLog());
+        AntAssert.assertContains("Nested Element 2", buildRule.getLog());
     }
 }
 
@@ -790,14 +805,14 @@ The ZIP provided there contains