|
21 | 21 |
|
22 | 22 | @RunWith(Spectrum.class) |
23 | 23 | public class JUnitRuleExample { |
| 24 | + public interface JUnitTempFolderInterface { |
| 25 | + TemporaryFolder getTempFolder(); |
| 26 | + } |
| 27 | + |
24 | 28 | // mixins for the Spectrum native style of mixin |
25 | | - public static class TempFolderRuleMixin { |
| 29 | + public static class TempFolderRuleMixin implements JUnitTempFolderInterface { |
26 | 30 | @Rule |
27 | 31 | public TemporaryFolder tempFolderRule = new TemporaryFolder(); |
| 32 | + |
| 33 | + @Override |
| 34 | + public TemporaryFolder getTempFolder() { |
| 35 | + return tempFolderRule; |
| 36 | + } |
28 | 37 | } |
29 | 38 |
|
30 | 39 | // alternative morphology of providing a rule - see http://junit.org/junit4/javadoc/4.12/org/junit/Rule.html |
@@ -95,12 +104,28 @@ public static void beforeClass() { |
95 | 104 | it("has access to an initialised object", () -> { |
96 | 105 | assertNotNull(tempFolderRuleMixin.get().getFolder().getRoot()); |
97 | 106 | }); |
| 107 | + |
| 108 | + describe("A spec with a rule mix-in via interface", () -> { |
| 109 | + JUnitTempFolderInterface tempFolderGetter = |
| 110 | + junitMixin(TempFolderRuleMixin.class, JUnitTempFolderInterface.class); |
| 111 | + |
| 112 | + it("has access to the rule-provided object at the top level", () -> { |
| 113 | + checkCanUseTempFolderAndRecordWhatItWas(ruleProvidedFoldersSeen, |
| 114 | + tempFolderGetter.getTempFolder()); |
| 115 | + }); |
| 116 | + |
| 117 | + }); |
98 | 118 | }); |
99 | 119 | } |
100 | 120 |
|
101 | 121 | private void checkCanUseTempFolderAndRecordWhatItWas(Set<File> filesSeen, |
102 | 122 | Supplier<TempFolderRuleMixin> tempFolderRuleMixin) { |
103 | | - assertNotNull(tempFolderRuleMixin.get().tempFolderRule.getRoot()); |
104 | | - filesSeen.add(tempFolderRuleMixin.get().tempFolderRule.getRoot()); |
| 123 | + checkCanUseTempFolderAndRecordWhatItWas(filesSeen, tempFolderRuleMixin.get().tempFolderRule); |
| 124 | + } |
| 125 | + |
| 126 | + private void checkCanUseTempFolderAndRecordWhatItWas(Set<File> filesSeen, |
| 127 | + TemporaryFolder folder) { |
| 128 | + assertNotNull(folder.getRoot()); |
| 129 | + filesSeen.add(folder.getRoot()); |
105 | 130 | } |
106 | 131 | } |
0 commit comments