Launchable Advent Calendar 14日目 - ignore-new-testsオプション
Launchableの各機能の利用方法を紹介する Launchable Advent Calendar 14日目です。
はじめに
今日はDay 6で紹介した launchable subset
コマンドの一オプションである --ignore-new-tests
オプションについて紹介します。
このオプションはローカルでの開発を支援することを目的に追加されたオプションです。
新しいテストを追加する際、追加したテストは手元で個別に実行し通ったことを確認してからPRやレビュー依頼など行うと思います。
その際、関連するテストも失敗しないのを手元で確認できたらと思ったことはないでしょうか。
launchable subset
コマンドを使えば --time 3m
の様に手元で実行可能な量のテストをPredictive Test Selection(PTS)で取得可能です。
ただしLaunchableの仕様上、新規に追加されたテストが優先的にPTSによって選択されます。
新規で追加されたテストを除いた結果を取得できるようにするのが --ignore-new-tests
オプションです。
--ignore-new-tests
使い方は --ignore-new-tests
オプションを launchable subset
コマンドに追加するだけです。
$ launchable subset --time 3m maven src/test/java/ > launchable-subset.txt
Konboi/launchable-java-example での例
Konboi/launchable-java-exampleを使って --ignore-new-tests
を試してみます。
まずは普通に実行してみましょう。
ここでは分かりやすいよう --target 100%
と指定し全件テストが返る状態で launchable subset
を実行します。
$ launchable record build --name ignore-new-tests-example
$ launchable subset --target 100% maven src/test/java
example.MulTest
example.AddTest
example.SubTest
example.DivTest
Launchable created subset 396180 for build ignore-new-tests-example (test session 1619454) in workspace konboi/advent-calendar-2022
| | Candidates | Estimated duration (%) | Estimated duration (min) |
|-----------|--------------|--------------------------|----------------------------|
| Subset | 4 | 100 | 0.106667 |
| Remainder | 0 | 0 | 0 |
| | | | |
| Total | 4 | 100 | 0.106667 |
Run `launchable inspect subset --subset-id 396180` to view full subset details
引数3つの合計を計算するAdd3クラスとAdd3Testを追加します。
// demonstration change
package example;
public class Add3 {
public int calc(int x, int y, int z) {
return x + y + z;
}
}
package example;
import org.junit.Test;
import static org.hamcrest.CoreMatchers.*;
import static org.junit.Assert.*;
public class Add3Test {
@Test
public void calc() {
assertThat(new Add3().calc(3, 4, 5), is(12));
}
}
この状態で launchable subset
を実行してみます。
新規で追加したAdd3Testが返って来ている事が分かります。
$ launchable subset --target 100% maven src/test/java
example.Add3Test
example.MulTest
example.SubTest
example.AddTest
example.DivTest
Launchable created subset 396185 for build ignore-new-tests-example (test session 1619454) in workspace konboi/advent-calendar-2022
| | Candidates | Estimated duration (%) | Estimated duration (min) |
|-----------|--------------|--------------------------|----------------------------|
| Subset | 5 | 100 | 0.126683 |
| Remainder | 0 | 0 | 0 |
| | | | |
| Total | 5 | 100 | 0.126683 |
Run `launchable inspect subset --subset-id 396185` to view full subset details
では --ignore-new-tests
オプションを追加してみましょう。
Add3Testが除かれているのが確認できます。
$ launchable subset --target 100% --ignore-new-tests maven src/test/java
example.MulTest
example.AddTest
example.SubTest
example.DivTest
Launchable created subset 396186 for build ignore-new-tests-example (test session 1619454) in workspace konboi/advent-calendar-2022
| | Candidates | Estimated duration (%) | Estimated duration (min) |
|-----------|--------------|--------------------------|----------------------------|
| Subset | 4 | 100 | 0.113333 |
| Remainder | 0 | 0 | 0 |
| | | | |
| Total | 4 | 100 | 0.113333 |
Run `launchable inspect subset --subset-id 396186` to view full subset details
さいごに
14日目はローカルでの開発を助ける --ignore-new-tests
オプションについて紹介しました。
明日はPTSにインプットを渡さなくてもテスト一覧を実行できるZero Input Subsetについて紹介します。
Discussion