LoginSignup
0
0

More than 1 year has passed since last update.

ArchTag を使って ArchTest だけを実行する

Posted at

環境

  • ArchUnit 1.0.1

ArchTest だけを実行したい

私のプロジェクトではコーディング規約を ArchTest として実装し、ユニットテストと共に実行できるようにしています。
ただ、テストケースをすべて実行すると割と時間がかかります。
規約チェックのために ArchTest だけを選択的に実行したい。

そこで、試しに JUnit の @Tag アノテーションを付けてみましたが動作しませんでした。
原因は調べていませんが、たぶん @Tag@Test アノテーションが付いているものだけを実行対象としてリストアップするんでしょう。
調べると、@ArchTag アノテーションという @Tag アノテーションに相当するものが ArchUnit に用意されていたため、これを使って実現しました。

実装

ArchTest に ArchTag アノテーションを付ける

まず ArchTest を収録している TestCase に @ArchTag を付けます。

FooTest.java

@AnalyzeClasses(
    packages = {"io.github.takeyoda"},
    importOptions = ImportOption.DoNotIncludeTests.class)
@ArchTag("ArchTest")
class FooTest {
  @ArchTest
  public static final ArchRule SOME_TEST = classes().that()...;
}

build.gradle に専用のタスクを追加

build.gradle に ArchTest だけを実行するタスクを追加します。

build.gradle
tasks.register('archTest', Test) {
  testLogging {
    events 'passed', 'skipped', 'failed'
  }
  useJUnitPlatform {
    includeTags 'ArchTest'
  }
}

実行例

追加したタスクを実行します。

$ ./gradlew archtest

まとめ

@ArchTag アノテーションを使って ArchUnit のテストケースをカテゴライズする方法を紹介しました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0