読者です 読者をやめる 読者になる 読者になる

Fight the Future

何かを始めたら、半分成功したのと同じ

TestNGでテストにプライオリティをつける

TestNG

Otaku, Cedric's weblog: Test method priorities in TestNGTestNGの開発者であるCedricがテストメソッドにプライオリティをつける方法を紹介してます。
TestNGには豊富なリスナーインタフェースがあり、リスナーのメソッドの中でテストメソッドのアノテーションを取り出したりできるため、独自のアノテーションを作ることも容易です。
ここでは@Prioirtyっていうアノテーションを作ってます。で、IMethodInterceptorっていうリスナーを実装して、アノテーションを取り出し、プライオリティの値に従って実行順序を制御してます。
IMethodInterceptorにはメソッドが1つだけあります。

List<IMethodInstance> intercept(List<IMethodInstance> methods, ITestContext context)

戻り値のリストの順にテストを実行することになるので、intercept()メソッドで順序を制御します。つまり、プライリティに従ってテストメソッドをソートするという処理になります。
IMethodInstance#getMethod()がITestNGMethodを返し、
さらにITestNGMethod#getMethod()がjava.lang.reflect.Methodを返すので、
あとはMethodからgetAnnotation()すればアノテーションを取れます。