テストには 2 つの論理的なカテゴリがあります。単純な機能単体テスト (合格/不合格) と、メトリック/診断のためだけのベンチマーク パフォーマンス テストです。
現在、私は単一のクラスにすべてのテストメソッドを持っています。それを呼び出しますMyTests
:
public class MyTests
{
@Test
public void testUnit1()
{
...
assertTrue(someBool);
}
@Test
public void testUnit2()
{
...
assertFalse(someBool);
}
@Test
@Category(PerformanceTest.class)
public void bmrkPerfTest1()
{
...
}
@Test
@Category(PerformanceTest.class)
public void bmrkPerfTest2()
{
...
}
}
次に、次のようにUnitTestSuite
定義しています
@RunWith(Categories.class)
@Categories.ExcludeCategory(PerformanceTest.class)
@SuiteClasses({ MyTests.class })
public class UnitTestSuite {}
そしてPerformanceTestSuite
@RunWith(Categories.class)
@Categories.IncludeCategory(PerformanceTest.class)
@SuiteClasses({ MyTests.class })
public class PerformanceTestSuite {}
単体テストをパフォーマンス テストとは別に実行できるようにしAnt
ます (Ant コードを含める必要はないと思います)。
これは、合計 4 つのクラス (MyTests、PerformanceTest、PerformanceTestSuite、および UnitTestSuite) があることを意味します。すべての単体テストを 1 つのクラスに配置し、ベンチマーク テストを別のクラスに配置するだけで、カテゴリや追加の注釈を追加することなく、それを行うことができたことがわかりました。Ant ではクラス名でテストを呼び出します。つまり、パッケージ内のすべてのテストを実行するわけではありません。
それは理にかなっており、アノテーションを使用してカテゴリ別に整理しておく理由は何ですか?それとも、2 つの単純なテスト クラスでリファクタリングした方がよいでしょうか?