TestNGには_@Rule
_のようなものがありますか?私は特に考えています:
_@Rule public TemporaryFolder folder = ...
_
あるいは
_@Rule public MethodRule globalTimeout = new Timeout(20);
_
setUp()
およびtearDown()
と同等のものを使用してこれらを手動で実装できることは承知していますが、_@Rule
_を使用して得られる便利さはありません。
ルールは、たとえばスーパークラスを使用すると、非常に簡単にエミュレートできます。
public void Base {
@BeforeMethod
public void createTempDir() { ... }
@AfterMethod
public void deleteTempDir() { ... }
}
public void MyTest extends Base {
@Test
...
}
Baseを拡張すると、一時ディレクトリは常に自動的に作成されてから削除されます。
ルールに対するこのアプローチの利点は、ルールが常にクラススコープであるのに対し、TestNGを使用すると、メソッド、テスト、クラス、グループ、さらにはスイートの周りにルールを実装できることです。
TestNGのBeforeClass
/AfterClass
は、JUnitのrule
/ruleClass
のようなものをシミュレートできますが、これらのクラスでは複製できない関数や効果がいくつかあります。として:繰り返し、フィルターなど。
ただし、代わりにこれらの関数をシミュレートするために使用できるTestNGによって提供されるいくつかのインターフェイスがあります。 IAnnotationTransformer
、IMethodInterceptor
。