0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Junit TestTemplate使ってみた

Posted at

はじめに

TestTemplateを使おうと思った経緯

日付をinputにして、
outputが日付から算出されているテストがあった。

検証はinputからoutputが期待通り出ているかという点のみだった。

これ、1個のテストメソッドの中に何個も日付のパターン書いていくのスマートじゃなくね?(なんて思ういきった時期もあったのかもしれない…)

調べてみたら、TestTemplateってのが見つかったから使ってみた。

TestTemplateでなにができる?

同じテストを異なるコンテキストで実行するための準備処理などを行う。

ここでいう準備処理は、@BeforeEach @AfterEachのアノテーションの動きのこと。
これをテスト実施前に変更して、異なる前提条件でテストメソッドを実行できるという機能!

どうやって使うの?

実装クラス
// TestTemplateInvocationContextProvider を実装する
public class TestExtension implements TestTemplateInvocationContextProvider {
    // @TestTemplateを付けたテストメソッドはこのメソッドが実行される
    @Override
	public Stream<TestTemplateInvocationContext> provideTestTemplateInvocationContexts(ExtensionContext context) {
		List<Date> datelist= new ArrayList<Date>();
        // テストしたい日付を追加する 
		List<TestTemplateInvocationContext> invList = new ArrayList<>();
	    // 	設定日付の分処理を追加
        datelist.forEach(target-> invList.add(addInvocation(target)));
		return invList.stream();
	}

    // 
    private static class QiitaTestTemplateInvocationContext implements TestTemplateInvocationContext {
        private final String name;
        private List<Extension> extension;

        /**
         * コンストラクタ
         */
        public QiitaTestTemplateInvocationContext(String name, List<Extension> extension) {
            this.name = name;
            this.extension = extension;
        }

        @Override
        public String getDisplayName(int invocationIndex) {
            return this.name;
        }

        @Override
        public List<Extension> getAdditionalExtensions() {
            return this.extension;
        }
    }
}
テストクラス

@ExtendWith({QiitaTestExtension.class})
public class MyTest  {
    @TestTemplate
    public void test1() {
        // 任意のテスト
    }
}

上記の実装で// テストしたい日付を追加する の箇所で対象日付を追加して
test1()を実行すると対象日付の回数分、日付の名称でテストが実行される。

おわりに

結局、スマートになったかはわからないな…

あんま、使ってそうな人いないし、勉強にはなったからいいか!笑

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?