/* * Copyright 2015-2017 the original author or authors. * * All rights reserved. This program and the accompanying materials are * made available under the terms of the Eclipse Public License v1.0 which * accompanies this distribution and is available at * * http://www.eclipse.org/legal/epl-v10.html */ package org.junit.jupiter.engine.extension; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.jupiter.api.Assertions.assertEquals; import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.RepeatedTest; import org.junit.jupiter.api.RepetitionInfo; import org.junit.jupiter.api.TestInfo; /** * Integration tests for {@link RepeatedTest @RepeatedTest} and supporting * infrastructure. * * @since 5.0 */ class RepeatedTestTests { private static int fortyTwo = 0; @BeforeEach @AfterEach void beforeAndAfterEach(TestInfo testInfo, RepetitionInfo repetitionInfo) { if (testInfo.getTestMethod().get().getName().equals("repeatedOnce")) { assertThat(repetitionInfo.getCurrentRepetition()).isEqualTo(1); assertThat(repetitionInfo.getTotalRepetitions()).isEqualTo(1); } else if (testInfo.getTestMethod().get().getName().equals("repeatedFortyTwoTimes")) { assertThat(repetitionInfo.getCurrentRepetition()).isBetween(1, 42); assertThat(repetitionInfo.getTotalRepetitions()).isEqualTo(42); } } @AfterAll static void afterAll() { assertEquals(42, fortyTwo); } @RepeatedTest(-99) void negativeRepeatCount(TestInfo testInfo) { assertThat(testInfo.getDisplayName()).isEqualTo("repetition 1 of 1"); } @RepeatedTest(0) void zeroRepeatCount(TestInfo testInfo) { assertThat(testInfo.getDisplayName()).isEqualTo("repetition 1 of 1"); } @RepeatedTest(1) void repeatedOnce(TestInfo testInfo) { assertThat(testInfo.getDisplayName()).isEqualTo("repetition 1 of 1"); } @RepeatedTest(42) void repeatedFortyTwoTimes(TestInfo testInfo) { assertThat(testInfo.getDisplayName()).matches("repetition \\d+ of 42"); fortyTwo++; } @RepeatedTest(value = 1, name = "") void defaultDisplayNameWithEmptyPattern(TestInfo testInfo) { assertThat(testInfo.getDisplayName()).isEqualTo("repetition 1 of 1"); } @RepeatedTest(value = 1, name = " \t ") void defaultDisplayNameWithBlankPattern(TestInfo testInfo) { assertThat(testInfo.getDisplayName()).isEqualTo("repetition 1 of 1"); } @RepeatedTest(1) @DisplayName("Repeat!") void customDisplayName(TestInfo testInfo) { assertThat(testInfo.getDisplayName()).isEqualTo("repetition 1 of 1"); } @RepeatedTest(1) @DisplayName(" \t ") void customDisplayNameWithBlankName(TestInfo testInfo) { assertThat(testInfo.getDisplayName()).isEqualTo("repetition 1 of 1"); } @RepeatedTest(value = 1, name = "{displayName}") @DisplayName("Repeat!") void customDisplayNameWithPatternIncludingDisplayName(TestInfo testInfo) { assertThat(testInfo.getDisplayName()).isEqualTo("Repeat!"); } @RepeatedTest(value = 1, name = "#{currentRepetition}") @DisplayName("Repeat!") void customDisplayNameWithPatternIncludingCurrentRepetition(TestInfo testInfo) { assertThat(testInfo.getDisplayName()).isEqualTo("#1"); } @RepeatedTest(value = 1, name = "Repetition #{currentRepetition} for {displayName}") @DisplayName("Repeat!") void customDisplayNameWithPatternIncludingDisplayNameAndCurrentRepetition(TestInfo testInfo) { assertThat(testInfo.getDisplayName()).isEqualTo("Repetition #1 for Repeat!"); } @RepeatedTest(value = 1, name = RepeatedTest.LONG_DISPLAY_NAME) @DisplayName("Repeat!") void customDisplayNameWithPredefinedLongPattern(TestInfo testInfo) { assertThat(testInfo.getDisplayName()).isEqualTo("Repeat! :: repetition 1 of 1"); } @RepeatedTest(value = 1, name = "{displayName} {currentRepetition}/{totalRepetitions}") @DisplayName("Repeat!") void customDisplayNameWithPatternIncludingDisplayNameCurrentRepetitionAndTotalRepetitions(TestInfo testInfo) { assertThat(testInfo.getDisplayName()).isEqualTo("Repeat! 1/1"); } @RepeatedTest(value = 1, name = "Repetition #{currentRepetition} for {displayName}") void defaultDisplayNameWithPatternIncludingDisplayNameAndCurrentRepetition(TestInfo testInfo) { assertThat(testInfo.getDisplayName()).isEqualTo( "Repetition #1 for defaultDisplayNameWithPatternIncludingDisplayNameAndCurrentRepetition(TestInfo)"); } @RepeatedTest(value = 5, name = "{displayName}") void injectRepetitionInfo(TestInfo testInfo, RepetitionInfo repetitionInfo) { assertThat(testInfo.getDisplayName()).isEqualTo("injectRepetitionInfo(TestInfo, RepetitionInfo)"); assertThat(repetitionInfo.getCurrentRepetition()).isBetween(1, 5); assertThat(repetitionInfo.getTotalRepetitions()).isEqualTo(5); } }