package com.ginsberg.junit.exit;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.condition.EnabledIfSystemProperty;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;
import static com.ginsberg.junit.exit.TestUtils.assertParameterizedTestFails;
public class WithParameterizedTest {
@Test
@DisplayName("@ParameterizedTest on method should reset state between tests")
void failOnSystemExitOnClass() {
assertParameterizedTestFails(WithParameterizedTest.SucceedsAndThenFails.class, true, false, true);
}
@EnabledIfSystemProperty(named = "running_within_test", matches = "true")
static class SucceedsAndThenFails {
@ParameterizedTest(name = "{index}")
@ValueSource(booleans = {true, false, true})
@ExpectSystemExit
public void testBasicAssumptions(boolean shouldSucceed) {
if(shouldSucceed) {
System.exit(1);
}
}
}
}