Title: [730] trunk/extensions/junit/src/java/org/jbehave/junit: [EK] Included patch for JUnitAdapter; thank you very much Alexandre!
Revision
730
Author
sirenian
Date
2007-05-23 07:48:52 -0500 (Wed, 23 May 2007)

Log Message

[EK] Included patch for JUnitAdapter; thank you very much Alexandre!

Modified Paths


Diff

Modified: trunk/extensions/junit/src/behaviour/org/jbehave/junit/JUnitAdapterBehaviour.java (729 => 730)

--- trunk/extensions/junit/src/behaviour/org/jbehave/junit/JUnitAdapterBehaviour.java	2007-05-23 05:56:18 UTC (rev 729)
+++ trunk/extensions/junit/src/behaviour/org/jbehave/junit/JUnitAdapterBehaviour.java	2007-05-23 12:48:52 UTC (rev 730)
@@ -77,6 +77,42 @@
         }
     }
     
+    public void shouldCountMultipleBehaviourMethodsAsTestsRecursively() {
+        // setup
+        JUnitAdapter.setBehaviours (new BehavioursWithOneBehavioursClass());
+        Test suite = JUnitAdapter.suite();
+        // execute
+        int testCaseCount = suite.countTestCases();
+       
+        // verify
+        ensureThat(testCaseCount, eq(3));
+    }
+   
+    public static class BehavioursWithOneBehavioursClass implements Behaviours {
+        public Class[] getBehaviours() {   
+            return new Class[] {
+                new AnotherBehavioursWithOneBehavioursClass().getClass()
+            };
+        }
+    }
+
+    public static class AnotherBehavioursWithOneBehavioursClass implements Behaviours {
+        public Class[] getBehaviours() {   
+            return new Class[] {
+                new BehavioursWithTwoBehaviourClasses().getClass()
+            };
+        }
+    }
+   
+    public static class BehavioursWithTwoBehaviourClasses implements Behaviours {
+        public Class[] getBehaviours() {
+            return new Class[] {
+                HasTwoMethods.class,
+                HasSingleMethod.class
+            };
+        }
+    }    
+
     public void shouldNotExecuteBehaviourMethodsWhileCountingThem() throws Exception {
         // setup
         JUnitAdapter.setBehaviours(new BehavioursAdapter(HasFailingMethod.class));

Modified: trunk/extensions/junit/src/java/org/jbehave/junit/JUnitAdapter.java (729 => 730)

--- trunk/extensions/junit/src/java/org/jbehave/junit/JUnitAdapter.java	2007-05-23 05:56:18 UTC (rev 729)
+++ trunk/extensions/junit/src/java/org/jbehave/junit/JUnitAdapter.java	2007-05-23 12:48:52 UTC (rev 730)
@@ -89,10 +89,14 @@
     }
 
     private static TestSuite createBehavioursTestSuite(Behaviours behaviours) {
-        TestSuite suite = new TestSuite(behaviours.toString());         
-        Class[] behaviourClasses = behaviours.getBehaviours();
-        for ( int i = 0; i < behaviourClasses.length; i++ ){
-            suite.addTest(createBehaviourTestSuite(new BehaviourClass(behaviourClasses[i])));
+        TestSuite suite = new TestSuite(behaviours.toString());        
+        Class[] behaviourClasses = behaviours.getBehaviours ();  
+        for ( int i = 0; i < behaviourClasses.length; i++ ) {
+            if (isBehavioursType(behaviourClasses[i])) {
+                suite.addTest(createBehavioursTestSuite((Behaviours)newInstance(behaviourClasses[i])));
+            } else {
+                suite.addTest(createBehaviourTestSuite(new BehaviourClass(behaviourClasses[i])));
+            }
         }
         return suite;
     }
@@ -106,6 +110,18 @@
         return suite;
     }
 
+    
+    private static boolean isBehavioursType(Class clazz) {
+        Class[] interfaces = clazz.getInterfaces();
+        for ( int i = 0; i < interfaces.length; i++ ) {
+            if (interfaces[i].equals(Behaviours.class)) {
+                return true;
+            }
+        }
+        return false;
+    }
+            
+    
     private static Behaviours getBehaviours() {
         if ( behaviours != null ){
             return behaviours;


To unsubscribe from this list please visit:

http://xircles.codehaus.org/manage_email

Reply via email to