protected void executeAllLifeCycles(TestRunnerAdaptor adaptor) throws Exception { doAnswer(new ExecuteLifecycle()).when(adaptor).fireCustomLifecycle(isA(BeforeRules.class)); doAnswer(new ExecuteLifecycle()).when(adaptor).fireCustomLifecycle(isA(AfterRules.class)); doAnswer(new ExecuteLifecycle()).when(adaptor).beforeClass(any(Class.class), any(LifecycleMethodExecutor.class)); doAnswer(new ExecuteLifecycle()).when(adaptor).afterClass(any(Class.class), any(LifecycleMethodExecutor.class)); doAnswer(new ExecuteLifecycle()).when(adaptor) .before(any(Object.class), any(Method.class), any(LifecycleMethodExecutor.class)); doAnswer(new ExecuteLifecycle()).when(adaptor) .after(any(Object.class), any(Method.class), any(LifecycleMethodExecutor.class)); doAnswer(new TestExecuteLifecycle(TestResult.passed())).when(adaptor).test(any(TestMethodExecutor.class)); }
/** * Invoke method after enrichment. Inexplicably, the {@code @Before} * and {@code @After} methods are not called when running this * executor. Calling them manually for now. * * @param testMethodExecutor Method executor. * @return Test result. */ public TestResult invoke(TestMethodExecutor testMethodExecutor) { RequestContextController controller = enricher.getRequestContextController(); try { controller.activate(); Object object = testMethodExecutor.getInstance(); Method method = testMethodExecutor.getMethod(); LOGGER.info("Invoking '" + method + "' on " + object); enricher.enrich(object); invokeAnnotated(object, Before.class); testMethodExecutor.invoke(enricher.resolve(method)); invokeAnnotated(object, After.class); } catch (Throwable t) { return TestResult.failed(t); } finally { controller.deactivate(); } return TestResult.passed(); }
@Test public void should_combine_descriptions() throws Exception { // given final TestResult p1 = TestResult.passed("First test passed"); final TestResult p2 = TestResult.passed("Second test passed"); final List<TestResult> testResults = asList(p1, p2); // when final TestResult result = TestResult.flatten(testResults); // then assertThat(result.getDescription()).isEqualTo( String.format("PASSED: 'First test passed'%nPASSED: 'Second test passed'%n")); }
@Test public void should_flatten_successful_test_results() throws Exception { // given final TestResult p1 = TestResult.passed(); final TestResult p2 = TestResult.passed(); final List<TestResult> testResults = asList(p1, p2); // when TestResult result = TestResult.flatten(testResults); // then assertThat(result.getStatus()).isEqualTo(TestResult.Status.PASSED); }
@Test public void should_ignore_null_entry_and_treat_result_as_success() throws Exception { // given final TestResult p1 = TestResult.passed("First test passed"); final List<TestResult> testResults = asList(p1, null); // when final TestResult result = TestResult.flatten(testResults); // then assertThat(result.getStatus()).isEqualTo(TestResult.Status.PASSED); } }
protected void executeAllLifeCycles(TestRunnerAdaptor adaptor) throws Exception { doAnswer(new ExecuteLifecycle()).when(adaptor).fireCustomLifecycle(isA(BeforeRules.class)); doAnswer(new ExecuteLifecycle()).when(adaptor).fireCustomLifecycle(isA(AfterRules.class)); doAnswer(new ExecuteLifecycle()).when(adaptor).beforeClass(any(Class.class), any(LifecycleMethodExecutor.class)); doAnswer(new ExecuteLifecycle()).when(adaptor).afterClass(any(Class.class), any(LifecycleMethodExecutor.class)); doAnswer(new ExecuteLifecycle()).when(adaptor) .before(any(Object.class), any(Method.class), any(LifecycleMethodExecutor.class)); doAnswer(new ExecuteLifecycle()).when(adaptor) .after(any(Object.class), any(Method.class), any(LifecycleMethodExecutor.class)); doAnswer(new TestExecuteLifecycle(TestResult.passed())).when(adaptor).test(any(TestMethodExecutor.class)); }
@Test public void should_combine_skipped_and_passed_tests_descriptions() throws Exception { // given final TestResult passed = TestResult.passed("First test passed"); final TestResult skipped = TestResult.skipped("Not implemented yet"); final List<TestResult> testResults = asList(skipped, passed); // when final TestResult result = TestResult.flatten(testResults); // then assertThat(result.getDescription()).isEqualTo( String.format("SKIPPED: 'Not implemented yet'%nPASSED: 'First test passed'%n")); }
@Test public void should_treat_skipped_and_passed_tests_as_passed_overall() throws Exception { // given final TestResult passed = TestResult.passed("Test passed"); final TestResult skipped = TestResult.skipped(); final List<TestResult> testResults = asList(skipped, passed); // when final TestResult result = TestResult.flatten(testResults); // then assertThat(result.getStatus()).isEqualTo(TestResult.Status.PASSED); assertThat(result.getDescription()).isEqualTo(String.format("SKIPPED: ''%nPASSED: 'Test passed'%n")); }
@Test public void should_ignore_null_entries_in_the_list_of_test_results() throws Exception { // given final TestResult p1 = TestResult.passed("First test passed"); final TestResult f1 = failed(new RuntimeException("Exception")); final List<TestResult> testResults = asList(p1, null, f1); // when final TestResult result = TestResult.flatten(testResults); // then assertThat(result.getStatus()).isEqualTo(TestResult.Status.FAILED); }
protected void executeAllLifeCycles(TestRunnerAdaptor adaptor) throws Exception { doAnswer(new ExecuteLifecycle()).when(adaptor).fireCustomLifecycle(isA(BeforeRules.class)); doAnswer(new ExecuteLifecycle()).when(adaptor).fireCustomLifecycle(isA(AfterRules.class)); doAnswer(new ExecuteLifecycle()).when(adaptor).beforeClass(any(Class.class), any(LifecycleMethodExecutor.class)); doAnswer(new ExecuteLifecycle()).when(adaptor).afterClass(any(Class.class), any(LifecycleMethodExecutor.class)); doAnswer(new ExecuteLifecycle()).when(adaptor) .before(any(Object.class), any(Method.class), any(LifecycleMethodExecutor.class)); doAnswer(new ExecuteLifecycle()).when(adaptor) .after(any(Object.class), any(Method.class), any(LifecycleMethodExecutor.class)); doAnswer(new TestExecuteLifecycle(TestResult.passed())).when(adaptor).test(any(TestMethodExecutor.class)); }
protected void executeAllLifeCycles(TestRunnerAdaptor adaptor) throws Exception { doAnswer(new ExecuteLifecycle()).when(adaptor).fireCustomLifecycle(isA(BeforeRules.class)); doAnswer(new ExecuteLifecycle()).when(adaptor).fireCustomLifecycle(isA(AfterRules.class)); doAnswer(new ExecuteLifecycle()).when(adaptor).beforeClass(any(Class.class), any(LifecycleMethodExecutor.class)); doAnswer(new ExecuteLifecycle()).when(adaptor).afterClass(any(Class.class), any(LifecycleMethodExecutor.class)); doAnswer(new ExecuteLifecycle()).when(adaptor) .before(any(Object.class), any(Method.class), any(LifecycleMethodExecutor.class)); doAnswer(new ExecuteLifecycle()).when(adaptor) .after(any(Object.class), any(Method.class), any(LifecycleMethodExecutor.class)); doAnswer(new TestExecuteLifecycle(TestResult.passed())).when(adaptor).test(any(TestMethodExecutor.class)); }
@Test public void should_mark_test_result_as_failed_if_there_is_at_least_one_failure() throws Exception { // given final TestResult p1 = TestResult.passed("First test passed"); final TestResult s1 = TestResult.skipped("Not implemented yet"); final TestResult f1 = failed(new RuntimeException("Exception")); final List<TestResult> testResults = asList(p1, s1, f1); // when final TestResult result = TestResult.flatten(testResults); // then assertThat(result.getStatus()).isEqualTo(TestResult.Status.FAILED); }
@Test public void shouldCallBeforeClassAndAfterClassWithoutLifecycleHandlers() throws Exception { TestRunnerAdaptor adaptor = mock(TestRunnerAdaptor.class); when(adaptor.test(isA(TestMethodExecutor.class))).thenReturn(TestResult.passed()); Result result = run(adaptor, ClassWithArquillianClassAndMethodRule.class); Assert.assertTrue(result.wasSuccessful()); assertCycle(1, Cycle.BEFORE_CLASS, Cycle.AFTER_CLASS); assertCycle(0, Cycle.BEFORE, Cycle.AFTER, Cycle.AFTER_RULE, Cycle.BEFORE_RULE); verify(adaptor, times(1)).beforeSuite(); verify(adaptor, times(1)).afterSuite(); }
@Test public void shouldNotCallAnyMethodsWithoutLifecycleHandlers() throws Exception { TestRunnerAdaptor adaptor = mock(TestRunnerAdaptor.class); when(adaptor.test(isA(TestMethodExecutor.class))).thenReturn(TestResult.passed()); Result result = run(adaptor, ClassWithArquillianRunner.class); Assert.assertTrue(result.wasSuccessful()); assertCycle(0, Cycle.basics()); verify(adaptor, times(1)).beforeSuite(); verify(adaptor, times(1)).afterSuite(); }
@Test public void shouldCallBeforeClassAndAfterClassWithoutLifecycleHandlers() throws Exception { TestRunnerAdaptor adaptor = mock(TestRunnerAdaptor.class); when(adaptor.test(isA(TestMethodExecutor.class))).thenReturn(TestResult.passed()); Result result = run(adaptor, ClassWithArquillianClassAndMethodRule.class); Assert.assertTrue(result.wasSuccessful()); assertCycle(1, Cycle.BEFORE_CLASS, Cycle.AFTER_CLASS); assertCycle(0, Cycle.BEFORE, Cycle.AFTER, Cycle.AFTER_RULE, Cycle.BEFORE_RULE); verify(adaptor, times(1)).beforeSuite(); verify(adaptor, times(1)).afterSuite(); }
public TestResult getTestResult() { if (context.getFailedConfigurations().size() > 0) { return TestResult.failed( context.getFailedConfigurations().getAllResults().iterator().next().getThrowable()); } else if (context.getFailedTests().size() > 0) { return TestResult.failed( context.getFailedTests().getAllResults().iterator().next().getThrowable()); } else if (context.getSkippedTests().size() > 0) { return TestResult.skipped().setThrowable(context.getSkippedTests().getAllResults().iterator().next().getThrowable()); } if (context.getPassedTests().size() > 0) { return TestResult.passed().setThrowable( context.getPassedTests().getAllResults().iterator().next().getThrowable()); } return TestResult.failed( new RuntimeException("Unknown test result: " + context).fillInStackTrace()); } }
@Test public void shouldNotCallAnyMethodsWithoutLifecycleHandlers() throws Exception { TestRunnerAdaptor adaptor = mock(TestRunnerAdaptor.class); when(adaptor.test(isA(TestMethodExecutor.class))).thenReturn(TestResult.passed()); Result result = run(adaptor, ClassWithArquillianRunner.class); Assert.assertTrue(result.wasSuccessful()); assertCycle(0, Cycle.basics()); verify(adaptor, times(1)).beforeSuite(); verify(adaptor, times(1)).afterSuite(); }
public TestResult getTestResult() { if (context.getFailedConfigurations().size() > 0) { return TestResult.failed( context.getFailedConfigurations().getAllResults().iterator().next().getThrowable()); } else if (context.getFailedTests().size() > 0) { return TestResult.failed( context.getFailedTests().getAllResults().iterator().next().getThrowable()); } else if (context.getSkippedTests().size() > 0) { return TestResult.skipped().setThrowable(context.getSkippedTests().getAllResults().iterator().next().getThrowable()); } if (context.getPassedTests().size() > 0) { return TestResult.passed().setThrowable( context.getPassedTests().getAllResults().iterator().next().getThrowable()); } return TestResult.failed( new RuntimeException("Unknown test result: " + context).fillInStackTrace()); } }
public void execute(@Observes Test event) throws Exception { TestResult result = TestResult.passed(); try { event.getTestMethodExecutor().invoke( enrichArguments( event.getTestMethod(), serviceLoader.get().all(TestEnricher.class))); } catch (Throwable e) { result = TestResult.failed(e); } finally { result.setEnd(System.currentTimeMillis()); } testResult.set(result); }
@Test public void shouldReturnTestResult() throws Exception { MockTestRunner.add(TestResult.passed()); ServletMethodExecutor executor = createExecutor(); TestResult result = executor.invoke(new MockTestExecutor()); Assert.assertEquals( "Should have returned a passed test", MockTestRunner.wantedResults.getStatus(), result.getStatus()); Assert.assertNull( "No Exception should have been thrown", result.getThrowable()); }