Skip to content

Commit 5216717

Browse files
committed
Use the same class to create all TestContextManagers
Use the first class found with spring annotation, to create the TestContextManagers for all glue classes.
1 parent ffebe1f commit 5216717

File tree

14 files changed

+63
-34
lines changed

14 files changed

+63
-34
lines changed

spring/src/main/java/cucumber/runtime/java/spring/SpringFactory.java

+1-9
Original file line numberDiff line numberDiff line change
@@ -154,15 +154,7 @@ private <T> T getTestInstance(final Class<T> type) {
154154
try {
155155
T instance = createTest(type);
156156

157-
if (dependsOnSpringContext(type)) {
158-
CucumberTestContextManager contextManager = new CucumberTestContextManager(type);
159-
contextManager.setParentOnApplicationContext(applicationContext);
160-
contextManager.prepareTestInstance(instance);
161-
contextManager.beforeTestClass();
162-
163-
contextManagersByClass.put(type, contextManager);
164-
} else if (type.getName().equals("cucumber.api.spring.SpringTransactionHooks") &&
165-
stepClassWithSpringContext != null) {
157+
if (stepClassWithSpringContext != null) {
166158
TestContextManager contextManager = new TestContextManager(stepClassWithSpringContext);
167159
contextManager.prepareTestInstance(instance);
168160
contextManager.beforeTestClass();

spring/src/test/java/cucumber/runtime/java/spring/AnotherStepDef.java

-2
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,9 @@
22

33
import cucumber.api.java.en.Then;
44
import org.springframework.beans.factory.annotation.Autowired;
5-
import org.springframework.test.context.ContextConfiguration;
65

76
import static org.junit.Assert.assertEquals;
87

9-
@ContextConfiguration("classpath:cucumber.xml")
108
public class AnotherStepDef {
119

1210
@Autowired

spring/src/test/java/cucumber/runtime/java/spring/OneStepDef.java

-2
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,7 @@
22

33
import cucumber.api.java.en.Given;
44
import cucumber.api.java.en.When;
5-
import org.springframework.test.context.ContextConfiguration;
65

7-
@ContextConfiguration("classpath:cucumber.xml")
86
public class OneStepDef {
97
int cucumbers;
108

spring/src/test/java/cucumber/runtime/java/spring/RunCukesTest.java

-8
This file was deleted.

spring/src/test/java/cucumber/runtime/java/spring/SpringFactoryTest.java

+7-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
package cucumber.runtime.java.spring;
22

3-
import org.junit.Test;
4-
53
import cucumber.runtime.java.ObjectFactory;
4+
import cucumber.runtime.java.spring_contextconfig.BellyStepdefs;
5+
import cucumber.runtime.java.spring_contextconfig.WithSpringAnnotations;
6+
import cucumber.runtime.java.spring_contexthierarchyconfig.WithContextHierarchyAnnotation;
7+
import cucumber.runtime.java.spring_dirtiescontextconfig.DirtiesContextBellyStepDefs;
8+
import org.junit.Test;
69

710
import static org.junit.Assert.assertEquals;
811
import static org.junit.Assert.assertNotNull;
@@ -36,12 +39,14 @@ public void shouldGiveUsNewStepInstancesForEachScenario() {
3639
public void shouldNeverCreateNewApplicationBeanInstances() {
3740
// Feature 1
3841
final ObjectFactory factory1 = new SpringFactory();
42+
factory1.addClass(BellyStepdefs.class);
3943
factory1.start();
4044
final BellyBean o1 = factory1.getInstance(BellyStepdefs.class).getBellyBean();
4145
factory1.stop();
4246

4347
// Feature 2
4448
final ObjectFactory factory2 = new SpringFactory();
49+
factory2.addClass(BellyStepdefs.class);
4550
factory2.start();
4651
final BellyBean o2 = factory2.getInstance(BellyStepdefs.class).getBellyBean();
4752
factory2.stop();

spring/src/test/java/cucumber/runtime/java/spring/TransactionStepDefs.java

-2
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,11 @@
44
import cucumber.api.java.Before;
55
import cucumber.api.java.en.Given;
66
import cucumber.api.java.en.Then;
7-
import org.springframework.test.context.ContextConfiguration;
87
import org.springframework.transaction.support.TransactionSynchronizationManager;
98

109
import static org.junit.Assert.assertFalse;
1110
import static org.junit.Assert.assertTrue;
1211

13-
@ContextConfiguration("classpath:cucumber.xml")
1412
public class TransactionStepDefs {
1513

1614
@Given("^a feature with the @txn annotation$")

spring/src/test/java/cucumber/runtime/java/spring/BellyStepdefs.java renamed to spring/src/test/java/cucumber/runtime/java/spring_contextconfig/BellyStepdefs.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
1-
package cucumber.runtime.java.spring;
1+
package cucumber.runtime.java.spring_contextconfig;
22

33
import cucumber.api.java.en.Given;
44
import cucumber.api.java.en.Then;
5+
import cucumber.runtime.java.spring.Belly;
6+
import cucumber.runtime.java.spring.BellyBean;
57
import org.springframework.beans.factory.annotation.Autowired;
68
import org.springframework.test.context.ContextConfiguration;
79

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package cucumber.runtime.java.spring_contextconfig;
2+
3+
import cucumber.api.CucumberOptions;
4+
5+
import cucumber.api.junit.Cucumber;
6+
import org.junit.runner.RunWith;
7+
8+
@RunWith(Cucumber.class)
9+
@CucumberOptions(glue = {"cucumber.runtime.java.spring_contextconfig",
10+
"cucumber.runtime.java.spring",
11+
"cucumber.api.spring"},
12+
features = {"classpath:cucumber/runtime/java/spring/cukes.feature",
13+
"classpath:cucumber/runtime/java/spring/xmlBasedSpring.feature",
14+
"classpath:cucumber/runtime/java/spring/stepdefinjection.feature",
15+
"classpath:cucumber/runtime/java/spring/transaction.feature"})
16+
public class RunCukesTest {
17+
}

spring/src/test/java/cucumber/runtime/java/spring/WithSpringAnnotations.java renamed to spring/src/test/java/cucumber/runtime/java/spring_contextconfig/WithSpringAnnotations.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
package cucumber.runtime.java.spring;
1+
package cucumber.runtime.java.spring_contextconfig;
22

3+
import cucumber.runtime.java.spring.DummyComponent;
34
import org.springframework.beans.factory.annotation.Autowired;
45
import org.springframework.beans.factory.annotation.Value;
56
import org.springframework.test.context.ContextConfiguration;
@@ -24,4 +25,5 @@ public boolean isAutowired() {
2425
public String getProperty() {
2526
return property;
2627
}
28+
2729
}

spring/src/test/java/cucumber/runtime/java/spring/WithContextHierarchyAnnotation.java renamed to spring/src/test/java/cucumber/runtime/java/spring_contexthierarchyconfig/WithContextHierarchyAnnotation.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
package cucumber.runtime.java.spring;
1+
package cucumber.runtime.java.spring_contexthierarchyconfig;
22

3+
import cucumber.runtime.java.spring.DummyComponent;
34
import org.springframework.beans.factory.annotation.Autowired;
4-
import org.springframework.beans.factory.annotation.Value;
55
import org.springframework.test.context.ContextConfiguration;
66
import org.springframework.test.context.ContextHierarchy;
77

spring/src/test/java/cucumber/runtime/java/spring/DirtiesContextBellyStepDefs.java renamed to spring/src/test/java/cucumber/runtime/java/spring_dirtiescontextconfig/DirtiesContextBellyStepDefs.java

+5-4
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
1-
package cucumber.runtime.java.spring;
1+
package cucumber.runtime.java.spring_dirtiescontextconfig;
22

3+
import cucumber.api.java.en.Given;
4+
import cucumber.api.java.en.Then;
5+
import cucumber.runtime.java.spring.Belly;
6+
import cucumber.runtime.java.spring.BellyBean;
37
import org.springframework.beans.factory.annotation.Autowired;
48
import org.springframework.test.annotation.DirtiesContext;
59
import org.springframework.test.context.ContextConfiguration;
610

7-
import cucumber.api.java.en.Given;
8-
import cucumber.api.java.en.Then;
9-
1011
import static org.junit.Assert.assertEquals;
1112

1213
@ContextConfiguration("classpath:cucumber.xml")
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package cucumber.runtime.java.spring_dirtiescontextconfig;
2+
3+
import cucumber.api.CucumberOptions;
4+
5+
import cucumber.api.junit.Cucumber;
6+
import org.junit.runner.RunWith;
7+
8+
@RunWith(Cucumber.class)
9+
@CucumberOptions(glue = {"cucumber.runtime.java.spring_dirtiescontextconfig", "cucumber.runtime.java.spring"},
10+
features = {"classpath:cucumber/runtime/java/spring/dirtyCukes.feature"})
11+
public class RunCukesTest {
12+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package cucumber.runtime.java.spring_webappconfig;
2+
3+
import cucumber.api.CucumberOptions;
4+
5+
import cucumber.api.junit.Cucumber;
6+
import org.junit.runner.RunWith;
7+
8+
@RunWith(Cucumber.class)
9+
@CucumberOptions(glue = {"cucumber.runtime.java.spring_webappconfig"},
10+
features = {"classpath:cucumber/runtime/java/spring/springinjection.feature"})
11+
public class RunCukesTest {
12+
}

spring/src/test/java/cucumber/runtime/java/spring/SpringInjectionStepDefs.java renamed to spring/src/test/java/cucumber/runtime/java/spring_webappconfig/SpringInjectionStepDefs.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package cucumber.runtime.java.spring;
1+
package cucumber.runtime.java.spring_webappconfig;
22

33
import cucumber.api.java.en.Given;
44
import cucumber.api.java.en.Then;

0 commit comments

Comments
 (0)