- У меня есть 2 правила "уровня класса":
MyRule1
и MyRule2
MyRule2
зависит от MyRule1
MyRule1
метод "до" долженпоэтому выполняйте перед методом MyRule2
"before".
В JUnit 4 его можно реализовать следующим образом: RuleChain :
static MyRule1 myRule1 = new MyRule1();
static MyRule2 myRule2 = new MyRule2(myRule1);
@Rule
TestRule ruleChain = RuleChain.outerRule(myRule1)
.around(myRule2);
В JUnit 5 я должен реализовать это следующим образом:
static MyRule1 myRule1 = new MyRule1();
@RegisterExtension
static MyRule2 myRule2 = new MyRule2(myRule1);
с MyRule2
:
class MyRule2 implements BeforeAllCallback {
private final MyRule1 myRule1;
public MyRule2(MyRule1 myRule1) {
this.myRule1 = myRule1;
}
@Override
public void beforeAll(ExtensionContext extensionContext) {
this.myRule1.beforeAll();
X x = this.myRule1.getX();
// do Rule 2 stuff with x
}
}
Это эквивалент реализации JUnit 4, когда дело доходит до результата.
Но я должен явно и вручную вызвать beforeAll()
обратный вызов MyRule1
в MyRule2
.
Я бы хотел, чтобы MyRule2
не отвечал за MyRule1
Выполнение.
Я просмотрел документацию Model Extension JUnit 5 , но не нашел ничего о расширениях, которые зависят от других расширений.