Repository: deltaspike Updated Branches: refs/heads/master 8f9441fcb -> 67ed43ba6
DELTASPIKE-1116 allow conditional replacement of injection-points in test-classes Project: http://git-wip-us.apache.org/repos/asf/deltaspike/repo Commit: http://git-wip-us.apache.org/repos/asf/deltaspike/commit/67ed43ba Tree: http://git-wip-us.apache.org/repos/asf/deltaspike/tree/67ed43ba Diff: http://git-wip-us.apache.org/repos/asf/deltaspike/diff/67ed43ba Branch: refs/heads/master Commit: 67ed43ba687466a4c7b3aea20de9e5a12bd50641 Parents: 8f9441f Author: gpetracek <gpetra...@apache.org> Authored: Sat Apr 23 11:34:24 2016 +0200 Committer: gpetracek <gpetra...@apache.org> Committed: Sat Apr 23 11:34:24 2016 +0200 ---------------------------------------------------------------------- .../deltaspike/testcontrol/api/junit/CdiTestRunner.java | 7 ++++++- .../deltaspike/testcontrol/api/junit/TestBaseConfig.java | 11 +++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/deltaspike/blob/67ed43ba/deltaspike/modules/test-control/api/src/main/java/org/apache/deltaspike/testcontrol/api/junit/CdiTestRunner.java ---------------------------------------------------------------------- diff --git a/deltaspike/modules/test-control/api/src/main/java/org/apache/deltaspike/testcontrol/api/junit/CdiTestRunner.java b/deltaspike/modules/test-control/api/src/main/java/org/apache/deltaspike/testcontrol/api/junit/CdiTestRunner.java index 2baf5a5..8cd2593 100644 --- a/deltaspike/modules/test-control/api/src/main/java/org/apache/deltaspike/testcontrol/api/junit/CdiTestRunner.java +++ b/deltaspike/modules/test-control/api/src/main/java/org/apache/deltaspike/testcontrol/api/junit/CdiTestRunner.java @@ -78,12 +78,14 @@ public class CdiTestRunner extends BlockJUnit4ClassRunner private static final Logger LOGGER = Logger.getLogger(CdiTestRunner.class.getName()); private static final boolean USE_TEST_CLASS_AS_CDI_BEAN; + private static final boolean ALLOW_INJECTION_POINT_MANIPULATION; private static Set<Integer> notifierIdentities = new CopyOnWriteArraySet<Integer>(); static { USE_TEST_CLASS_AS_CDI_BEAN = TestBaseConfig.ContainerIntegration.USE_TEST_CLASS_AS_CDI_BEAN; + ALLOW_INJECTION_POINT_MANIPULATION = TestBaseConfig.MockIntegration.ALLOW_MANUAL_INJECTION_POINT_MANIPULATION; } private static ThreadLocal<Boolean> automaticScopeHandlingActive = new ThreadLocal<Boolean>(); @@ -309,7 +311,10 @@ public class CdiTestRunner extends BlockJUnit4ClassRunner if (!USE_TEST_CLASS_AS_CDI_BEAN || beans == null || beans.isEmpty()) { - BeanProvider.injectFields(this.originalTarget); //fallback to simple injection + if (!ALLOW_INJECTION_POINT_MANIPULATION) + { + BeanProvider.injectFields(this.originalTarget); //fallback to simple injection + } invokeMethod(this.originalTarget); } else http://git-wip-us.apache.org/repos/asf/deltaspike/blob/67ed43ba/deltaspike/modules/test-control/api/src/main/java/org/apache/deltaspike/testcontrol/api/junit/TestBaseConfig.java ---------------------------------------------------------------------- diff --git a/deltaspike/modules/test-control/api/src/main/java/org/apache/deltaspike/testcontrol/api/junit/TestBaseConfig.java b/deltaspike/modules/test-control/api/src/main/java/org/apache/deltaspike/testcontrol/api/junit/TestBaseConfig.java index 7c1c70f..35c8d36 100644 --- a/deltaspike/modules/test-control/api/src/main/java/org/apache/deltaspike/testcontrol/api/junit/TestBaseConfig.java +++ b/deltaspike/modules/test-control/api/src/main/java/org/apache/deltaspike/testcontrol/api/junit/TestBaseConfig.java @@ -43,6 +43,8 @@ public interface TestBaseConfig extends DeltaSpikeBaseConfig { String ALLOW_MOCKED_BEANS_KEY = "deltaspike.testcontrol.mock-support.allow_mocked_beans"; String ALLOW_MOCKED_PRODUCERS_KEY = "deltaspike.testcontrol.mock-support.allow_mocked_producers"; + String ALLOW_MANUAL_INJECTION_POINT_MANIPULATION_KEY = + "deltaspike.testcontrol.mock-support.allow_manual_injection-point_manipulation"; Boolean ALLOW_MOCKED_BEANS = ConfigResolver.resolve(ALLOW_MOCKED_BEANS_KEY) .as(Boolean.class) @@ -56,5 +58,14 @@ public interface TestBaseConfig extends DeltaSpikeBaseConfig .withDefault(Boolean.FALSE) .getValue(); + //if enabled it's possible to change the value of injection-points after the injection-process and + //before test-execution. that allows to replace injection-points (e.g. with a mock) conditionally + //via a test-rule or @Before + Boolean ALLOW_MANUAL_INJECTION_POINT_MANIPULATION = + ConfigResolver.resolve(ALLOW_MANUAL_INJECTION_POINT_MANIPULATION_KEY) + .as(Boolean.class) + .withCurrentProjectStage(true) + .withDefault(Boolean.FALSE) + .getValue(); } }