Source:
<code>public void run(final RunNotifier notifier) { if (State.hasAnyArquillianRule(this.getTestClass())) { throw new RuntimeException(String.format("TestClass: %s contains Arquillian runner and Arquillian Rule." + " Arquillian doesn't support @RunWith(Arquillian.class) and ArquillianTestClass or " <START> + "ArquillianTest to use at the same time.", this.getTestClass().getName())); <END> } if (State.isNotRunningInEclipse()) { State.runnerStarted(); } if (!State.hasTestAdaptor()) { if (State.hasInitializationException()) { notifier.fireTestFailure( new Failure(getDescription(), new RuntimeException( "Arquillian has previously been attempted initialized, but failed. See cause for previous exception", State.getInitializationException()))); } else { try { TestRunnerAdaptor adaptor = TestRunnerAdaptorBuilder.build(); adaptor.beforeSuite(); State.testAdaptor(adaptor); } catch (Exception e) { State.caughtInitializationException(e); notifier.fireTestFailure(new Failure(getDescription(), e)); } } } notifier.addListener(new RunListener() { @Override public void testRunFinished(Result result) throws Exception { State.runnerFinished(); shutdown(); } private void shutdown() { try { if (State.isLastRunner()) { try { if (adaptor != null) { adaptor.afterSuite(); adaptor.shutdown(); } } finally { State.clean(); } } adaptor = null; } catch (Exception e) { throw new RuntimeException("Could not run @AfterSuite", e); } } }); if (State.hasTestAdaptor()) { adaptor = State.getTestAdaptor(); super.run(notifier); } }</code><technical_language>inform user decide runner rules - ideally link docs</technical_language>

Target:
public void run(final RunNotifier notifier) { if (State.hasAnyArquillianRule(this.getTestClass())) { throw new RuntimeException(String.format("TestClass: %s contains Arquillian runner and Arquillian Rule." + " Arquillian doesn't support @RunWith(Arquillian.class) and ArquillianTestClass or " + "ArquillianTest to use at the same time. You have to decide whether you want use runner:" + " <LINK_0> or rules : <LINK_1>", this.getTestClass().getName())); } if (State.isNotRunningInEclipse()) { State.runnerStarted(); } if (!State.hasTestAdaptor()) { if (State.hasInitializationException()) { notifier.fireTestFailure( new Failure(getDescription(), new RuntimeException( "Arquillian initialization has already been attempted, but failed. See previous exceptions for cause", State.getInitializationException()))); } else { try { TestRunnerAdaptor adaptor = TestRunnerAdaptorBuilder.build(); adaptor.beforeSuite(); State.testAdaptor(adaptor); } catch (Exception e) { State.caughtInitializationException(e); notifier.fireTestFailure(new Failure(getDescription(), e)); } } } notifier.addListener(new RunListener() { @Override public void testRunFinished(Result result) throws Exception { State.runnerFinished(); shutdown(); } private void shutdown() { try { if (State.isLastRunner()) { try { if (adaptor != null) { adaptor.afterSuite(); adaptor.shutdown(); } } finally { State.clean(); } } adaptor = null; } catch (Exception e) { throw new RuntimeException("Could not run @AfterSuite", e); } } }); if (State.hasTestAdaptor()) { adaptor = State.getTestAdaptor(); super.run(notifier); } }