| /* |
| * 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(); |
| } |
| } |