Gerhard Petracek created DELTASPIKE-1338:
--------------------------------------------
Summary: support class-filter per test
Key: DELTASPIKE-1338
URL: https://issues.apache.org/jira/browse/DELTASPIKE-1338
Project: DeltaSpike
Issue Type: Improvement
Components: TestControl
Affects Versions: 1.8.1
Reporter: Gerhard Petracek
Assignee: Gerhard Petracek
Fix For: 1.8.2
based on DELTASPIKE-1337 it should be possible to define a class-filter per
test.
it allows type-safe isolation for tests and with cdi 1.1+ e.g. to build
labeled-alternatives without text-based config.
a possible approach looks like:
{code:java}
@Retention(RUNTIME)
@Target(TYPE)
public @interface Labeled {
Class<? extends TestControl.Label> value();
}
public abstract class AbstractLabeledAlternativeFilter implements ClassFilter {
private final Class<? extends TestControl.Label> activeLabel;
protected AbstractLabeledAlternativeFilter(Class<? extends
TestControl.Label> activeLabel) {
this.activeLabel = activeLabel;
}
@Override
public boolean isFiltered(Class<?> targetClass) {
if (!targetClass.isAnnotationPresent(Alternative.class)) {
return false;
}
Labeled labeled = targetClass.getAnnotation(Labeled.class);
if (labeled == null) {
return false;
}
if (labeled.value().equals(activeLabel)) {
return false;
}
return true;
}
}
{code}
{code:java}
@Labeled(Label1Test.Label1.class)
@Alternative
@Priority(1)
public class MyLabeledAlternativeBean1 extends MyBean { /*...*/ }
@RunWith(CdiTestRunner.class)
@TestControl(activeAlternativeLabel = Label1Test.Label1.class, classFilter =
Label1Test.Label1Filter.class)
public class Label1Test {
@Inject
private MyBean myBean;
//tests
public static class Label1 implements TestControl.Label {
}
public static class Label1Filter extends AbstractLabeledAlternativeFilter {
public Label1Filter() {
super(Label1.class);
}
}
}
{code}
besides that other custom concepts are possible as well (not even bound to
alternative-beans).
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)