From 715389f87fb51a5f5c9ef75f249be114ea69fbdd Mon Sep 17 00:00:00 2001 From: Maciej Mikosik Date: Thu, 11 Dec 2014 17:08:05 +0100 Subject: [PATCH] made SuiteTester instance reusable --- main/java/org/testanza/SuiteTester.java | 7 +++++-- .../java/org/testanza/describe_SuiteTester.java | 17 +++++++++++++++++ 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/main/java/org/testanza/SuiteTester.java b/main/java/org/testanza/SuiteTester.java index 2546f8c..63919f8 100644 --- a/main/java/org/testanza/SuiteTester.java +++ b/main/java/org/testanza/SuiteTester.java @@ -10,11 +10,13 @@ import org.hamcrest.Matcher; public abstract class SuiteTester implements Tester { - private final List tests = new ArrayList(); + private List tests; public Test test(final T item) { + tests = new ArrayList(); try { tests(item); + return newSuite(name(item), tests); } catch (final Throwable e) { return newCase(name(item), new Closure() { public void invoke() throws Throwable { @@ -26,8 +28,9 @@ public void invoke() throws Throwable { , e); } }); + } finally { + tests = null; } - return newSuite(name(item), tests); } protected abstract String name(T item); diff --git a/test/java/org/testanza/describe_SuiteTester.java b/test/java/org/testanza/describe_SuiteTester.java index 6c4be5e..7b4d85a 100644 --- a/test/java/org/testanza/describe_SuiteTester.java +++ b/test/java/org/testanza/describe_SuiteTester.java @@ -102,6 +102,23 @@ protected void tests(Object item) { verifyEquals(suite.tests.size(), 1); } + public void tester_instance_is_reusable() { + tester = new SuiteTester() { + protected String name(Object item) { + return ""; + } + + protected void tests(Object item) throws Throwable { + testThat(object, testerA); + testThat(object, testerA); + } + }; + suite = (Suite) tester.test(object); + verifyEquals(suite.tests.size(), 2); + suite = (Suite) tester.test(object); + verifyEquals(suite.tests.size(), 2); + } + public void lists_and_arrays_are_covariant() { class Foo {} class Bar extends Foo {}