blob: 4f60e05bc94a39cb1eb631734ba4d4b86b2fb423 [file] [log] [blame]
/*
* Copyright (C) 2016 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package vogar.target.junit4;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
import vogar.target.AbstractTestRunnerTest;
import vogar.target.TestRunner;
import vogar.target.TestRunnerProperties;
/**
* Tests for using TestRunner to run JUnit 4 classes.
*/
@RunWith(JUnit4.class)
public class TestRunnerJUnit4Test extends AbstractTestRunnerTest {
@TestRunnerProperties(testClass = ChangeDefaultLocaleTest.class)
@Test
public void testRunner_ChangeDefaultLocaleTest() throws Exception {
TestRunner runner = testRunnerRule.createTestRunner();
runner.run();
// Note, that this doesn't complete normally. That's correct behavior as that will trigger
// the vogar process to restart the VM and run the tests from after this one.
expectedResults()
.success("testDefault_Locale_CANADA")
.success("testDefault_Locale_CHINA")
.completedNormally();
}
@TestRunnerProperties(testClass = SimpleTest2.class)
@Test
public void testRunner_SimpleTest2() throws Exception {
TestRunner runner = testRunnerRule.createTestRunner();
runner.run();
expectedResults()
.success("Simple3")
.success("simple1")
.success("simple2")
.completedNormally();
}
@TestRunnerProperties(testClass = SimpleTest2.class, profile = true)
@Test
public void testRunner_SimpleTest2_Profile() throws Exception {
TestRunner runner = testRunnerRule.createTestRunner();
runner.run();
expectedResults()
.ensureProfilingWasRequested()
.success("Simple3")
.success("simple1")
.success("simple2")
.completedNormally();
}
@TestRunnerProperties(testClass = SimpleTest2.class)
@Test
public void testRunner_SkipPast() throws Exception {
Class<?> testClass = testRunnerRule.testClass();
String failingTestName = testClass.getName() + "#simple1";
TestRunner runner = testRunnerRule.createTestRunner("--skipPast", failingTestName);
runner.run();
expectedResults()
.success("simple2")
.completedNormally();
}
@TestRunnerProperties(testClass = SimpleTest2.class)
@Test
public void testRunner_SkipPastAll() throws Exception {
Class<?> testClass = testRunnerRule.testClass();
String failingTestName = testClass.getName() + "#other";
TestRunner runner = testRunnerRule.createTestRunner("--skipPast", failingTestName);
runner.run();
expectedResults().completedNormally();
}
@TestRunnerProperties(testClass = SimpleTest2.class)
@Test
public void testRunner_SimpleTest2_OneMethod() throws Exception {
String[] args = {"simple2"};
TestRunner runner = testRunnerRule.createTestRunner(args);
runner.run();
expectedResults()
.success("simple2")
.completedNormally();
}
@TestRunnerProperties(testClass = SimpleTest2.class)
@Test
public void testRunner_SimpleTest2_TwoMethod() throws Exception {
String[] args = {"simple1", "Simple3"};
TestRunner runner = testRunnerRule.createTestRunner(args);
runner.run();
expectedResults()
.success("Simple3")
.success("simple1")
.completedNormally();
}
@TestRunnerProperties(testClass = SimpleTest2.class)
@Test
public void testRunner_SimpleTest2_WrongMethod() throws Exception {
String args = "testSimple5";
TestRunner runner = testRunnerRule.createTestRunner(args);
runner.run();
expectedResults()
.failure("testSimple5",
"junit.framework.AssertionFailedError: Method \"" + args
+ "\" not found\n")
.completedNormally();
}
@TestRunnerProperties(testClass = ExtendedSimpleTest2.class)
@Test
public void testRunner_ExtendedSimple2() throws Exception {
TestRunner runner = testRunnerRule.createTestRunner();
runner.run();
expectedResults()
.success("Simple3")
.success("simple1")
.success("simple2")
.success("simple4")
.completedNormally();
}
@TestRunnerProperties(
testClass = ExtendedSimpleTest2.class,
testClassOrPackage = "vogar.target.junit4.ExtendedSimpleTest2#simple2")
@Test
public void testRunner_ExtendedSimple2_QualifiedAndMethodNames() throws Exception {
String[] args = {"simple1", "simple4"};
TestRunner runner = testRunnerRule.createTestRunner(args);
runner.run();
expectedResults()
.success("simple1")
.success("simple2")
.success("simple4")
.completedNormally();
}
@TestRunnerProperties(testClass = SimpleTest.class)
@Test
public void testRunner_SimpleTest() throws Exception {
TestRunner runner = testRunnerRule.createTestRunner();
runner.run();
expectedResults()
.forTestClass(SimpleTest3.class)
.success("simple")
.completedNormally();
}
@TestRunnerProperties(testClass = FailTest.class)
@Test
public void testRunner_FailTest() throws Exception {
TestRunner runner = testRunnerRule.createTestRunner();
runner.run();
expectedResults()
.failure("failure",
"java.lang.AssertionError: failed.\n")
.success("success")
.success("throwAnotherExpectedException")
.failure("throwException", "java.lang.RuntimeException: exception\n")
.success("throwExpectedException")
.completedNormally();
}
@TestRunnerProperties(testClass = FailConstructorTest.class)
@Test
public void testRunner_FailConstructorTest() throws Exception {
TestRunner runner = testRunnerRule.createTestRunner();
runner.run();
expectedResults()
.failure("testSuccess", ""
+ "java.lang.IllegalStateException: Constructor failed\n")
.completedNormally();
}
@TestRunnerProperties(testClass = SuiteTest.class)
@Test
public void testRunner_SuiteTest() throws Exception {
TestRunner runner = testRunnerRule.createTestRunner();
runner.run();
expectedResults()
.forTestClass(SimpleTest2.class)
.success("Simple3")
.success("simple1")
.success("simple2")
.forTestClass(SimpleTest3.class)
.success("simple")
.completedNormally();
}
@TestRunnerProperties(testClass = LongTest.class, timeout = 1)
@Test
public void testRunner_LongTest_WithTimeout() throws Exception {
TestRunner runner = testRunnerRule.createTestRunner();
runner.run();
// Note, that this doesn't complete normally. That's correct behavior as that will trigger
// the vogar process to restart the VM and run the tests from after this one.
expectedResults()
.failure("test", "java.util.concurrent.TimeoutException\n")
.aborted();
}
@TestRunnerProperties(testClass = LongTest2.class)
@Test
public void testRunner_LongTest2_WithoutTimeout() throws Exception {
TestRunner runner = testRunnerRule.createTestRunner();
runner.run();
expectedResults()
.success("test1")
.success("test2")
.success("test3")
.success("test4")
.success("test5")
.success("test6")
.success("test7")
.success("test8")
.completedNormally();
}
@TestRunnerProperties(testClass = TestMethodWithParameterTest.class)
@Test
public void testRunner_TestMethodWithParameterTest() throws Exception {
TestRunner runner = testRunnerRule.createTestRunner();
runner.run();
String methodName = "parameterized";
expectedResults()
.failure(methodName,
"java.lang.Exception: Method " + methodName
+ " should have no parameters\n")
.completedNormally();
}
@TestRunnerProperties(testClass = TestMethodWithParameterTest.class)
@Test
public void testRunner_TestMethodWithParameterTest_Requested() throws Exception {
String methodName = "parameterized";
TestRunner runner = testRunnerRule.createTestRunner(methodName);
runner.run();
// Ignores tests with no parameters.
expectedResults()
.failure(methodName,
"java.lang.Exception: Method " + methodName
+ " should have no parameters\n")
.completedNormally();
}
@TestRunnerProperties(testClass = NoMethodTest.class)
@Test
public void testRunner_NoMethodTest() throws Exception {
TestRunner runner = testRunnerRule.createTestRunner();
runner.run();
// Ignores tests with no parameters.
expectedResults()
.unsupported()
.completedNormally();
}
@TestRunnerProperties(testClass = AnnotatedTestMethodsTest.class)
@Test
public void testRunner_AnnotatedTestMethodsTest() throws Exception {
TestRunner runner = testRunnerRule.createTestRunner();
runner.run();
expectedResults()
.success("test1", "Before\nTest 1\nAfter\n")
.completedNormally();
}
@TestRunnerProperties(testClass = LazyTestCreationTest.class)
@Test
public void testRunner_LazyTestCreationTest() throws Exception {
TestRunner runner = testRunnerRule.createTestRunner();
runner.run();
expectedResults()
.success("test1", "Creating\n")
.success("test2", "Creating\n")
.completedNormally();
}
// =========================================================================================
// Place all JUnit4 specific test methods after this one.
// =========================================================================================
@TestRunnerProperties(testClass = HasIgnoredTest.class)
@Test
public void testRunner_HasIgnoredTest() throws Exception {
TestRunner runner = testRunnerRule.createTestRunner();
runner.run();
expectedResults()
.success("working")
.completedNormally();
}
}