現在、私は JUnit 4 を使用しており@BeforeClass
、ユーザー スキーマのリセットやサンプル データの準備に必要なすべてをメソッドでセットアップしています。このアプローチが気に入らないわけではありませんが、次の理由で非常にイライラすることがわかりました。
- Parameterizedアノテーションを使用して、まったく同じテストを異なる入力データで実行しています。静的メソッドで動作する
@BeforeClass
ため、パラメーター化は機能しません。@BeforeClass
@BeforeClass
つまり、ロジックを保持したい場合は、テストを複製する必要があります。@After は使用できません@Before
。これらはすべてのテストの後に発生し、オーバーヘッドになるためです。
テストを処理する抽象クラスと、試したいすべてのグループ パラメータのサブクラスを記述して、テスト コードを 1 回だけ記述できるようにするという意味で、この単体テストをリファクタリングできると考えていました。
次の出発点でよりクリーンなオプションを提案できることを願っています: を使用し@Parameterized
、「データベース」メソッドをパラメーター グループごとに 1 回だけ実行する必要があります。
編集:
これは、BeforeClass を使用しない私のクラスの例です
RunWith(LabelledParameterized.class)
public class TestCreateCampaign extends AbstractTestSubscriberCampaign {
public TestCreateCampaign(String label, String apiKey, String userKey,
int customerId) {
super(label, apiKey, userKey, customerId);
}
@Before
public void setUp() throws Exception {
super.setUp();
}
@After
public void tearDown() throws Exception {
super.tearDown();
}
@Parameters
public static Collection<Object[]> generatedData() {
return DataProvider.generatedCorrectSubscriberData();
}
@Test
public void testCreateEmailCampaignBothTriggered() {
// TEST
}
@Test
public void testCreateTextCampaignTriggered() {
// TEST
}
@Test
public void testCreateTextCampaignTest() {
// TEST
}
// Other Tests
}