private void createScopedObjectField(FixtureType fixtureType, Field field) { if (!field.getType().equals(ScopedObjectHolder.class)) { throw new AnnotationFormatError(SimpleFormatter.format("The '%s' annotation can only be applied to fields of type '%s'", ConcordionScoped.class.getSimpleName(), ScopedObjectHolder.class.getSimpleName())); } ConcordionScoped annotation = field.getAnnotation(ConcordionScoped.class); Scope fieldScope = annotation.value(); String name = field.getName(); ScopedObject scopedObject = createScopedObject(fixtureType, name, fieldScope); scopedFields.get(fieldScope).add(new ScopedFieldImpl(scopedObject, field)); }
public class InvalidScopedObjectTest { @ConcordionScoped(Scope.SPECIFICATION) Integer x; @Test public void before() { try { new FixtureInstance(this); fail("Expected AnnotationFormatError since only types of ScopedObjectHolder can be annotated with ConcordionScoped"); } catch (AnnotationFormatError e) { assertThat(e.getMessage(), containsString("The 'ConcordionScoped' annotation can only be applied to fields of type 'ScopedObjectHolder'")); } } }
private void createScopedObjectField(FixtureType fixtureType, Field field) { if (!field.getType().equals(ScopedObjectHolder.class)) { throw new AnnotationFormatError(SimpleFormatter.format("The '%s' annotation can only be applied to fields of type '%s'", ConcordionScoped.class.getSimpleName(), ScopedObjectHolder.class.getSimpleName())); } ConcordionScoped annotation = field.getAnnotation(ConcordionScoped.class); Scope fieldScope = annotation.value(); String name = field.getName(); ScopedObject scopedObject = createScopedObject(fixtureType, name, fieldScope); scopedFields.get(fieldScope).add(new ScopedFieldImpl(scopedObject, field)); }
public class SpecWithBeforeSpec { @ConcordionScoped(Scope.SPECIFICATION) protected ScopedObjectHolder<AtomicInteger> beforeSpecCounter = new ScopedObjectHolder<AtomicInteger>() { @Override protected AtomicInteger create() { return new AtomicInteger(); }; }; @BeforeSpecification public void beforeSpec() { beforeSpecCounter.get().getAndIncrement(); } public boolean beforeSpecRunOnce() { return beforeSpecCounter.get().get() == 1; } }
public class ScopedFieldsTest { @ConcordionScoped(Scope.SPECIFICATION) ScopedObjectHolder<AtomicInteger> specificationInteger = new ScopedObjectHolder<AtomicInteger>() { @Override @ConcordionScoped(Scope.EXAMPLE) ScopedObjectHolder<AtomicInteger> exampleInteger = new ScopedObjectHolder<AtomicInteger>() { @Override
private ConcordionExtension extension; @ConcordionScoped(Scope.SPECIFICATION) private ScopedObjectHolder<ExtensionTestHelper> helper = new ScopedObjectHolder<ExtensionTestHelper>() { @Override
@RunWith(ConcordionRunner.class) public class ConcordionScopedFixture { @org.concordion.api.ConcordionScoped(Scope.EXAMPLE) private ScopedObjectHolder<AtomicInteger> exampleScopedCounter = new ScopedObjectHolder<AtomicInteger>() { @Override @org.concordion.api.ConcordionScoped(Scope.SPECIFICATION) private ScopedObjectHolder<AtomicInteger> specScopedCounter = new ScopedObjectHolder<AtomicInteger>() { @Override