1

Flowable の単体テストをいくつか書きたいのですが、メソッドが異なるとデータの競合が発生する可能性があります。2 つのテスト メソッド間のテスト データをクリアするにはどうすればよいですか?

注釈を試しました@DirtiesContextが、うまくいきませんでした。

@RunWith(SpringRunner.class)
@SpringBootTest
@AutoConfigureMockMvc
@ActiveProfiles("test")
@Import(TestConfig.class)
@DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_EACH_TEST_METHOD)
public class FlowableTest {
    @Autowired
    private ProcessEngine processEngine;

    @Test
    public void test() {
        IdentityService identityService = processEngine.getIdentityService();
        Group defaultGroup = identityService.newGroup("default");
        defaultGroup.setName("233333");
        identityService.saveGroup(defaultGroup);
    }

    @Test
    public void test2() {
        IdentityService identityService = processEngine.getIdentityService();
        Group defaultGroup = identityService.newGroup("default");
        defaultGroup.setName("233333");
        identityService.saveGroup(defaultGroup);
        // do some thing
    }
}

これがエラーメッセージです。

Caused by: org.h2.jdbc.JdbcSQLIntegrityConstraintViolationException: Unique index or primary key violation: "PUBLIC.PRIMARY_KEY_6B ON PUBLIC.ACT_ID_GROUP(ID_) VALUES 1"; SQL statement:
insert into ACT_ID_GROUP (ID_, REV_, NAME_, TYPE_)
    values (
      ?,
      1, 
      ?,
      ?
    ) [23505-199]

そして、各メソッドの前に手動でテーブルを作成したいのですが、「flowable-engine-6.4.1.jar」に「flowable.h2.create.history.sql」と「flowable.h2.create.engine.sql」が見つかりました、しかし、これらの単体テストを再実行すると、多くの列が欠落していることがわかりました。

すべてのテスト データを簡単にクリアする方法はありますか?

4

1 に答える 1

0

Flowable コードベースでテストを行う方法と、私が他のプロジェクトで行っている方法は、すべてのテスト内のデータを手動で削除することです。その背後にある理由は、テストで作成しているデータを知っているからです。

たとえば、特定のテストでは、@Afterメソッド内のすべてのグループを削除できます。

于 2019-08-11T12:54:39.933 に答える