@@ -0,0 +1,1002 @@
+package arez.integration.autorun;%0A%0Aimport arez.annotations.ArezComponent;%0Aimport arez.annotations.Autorun;%0Aimport arez.integration.AbstractIntegrationTest;%0Aimport org.testng.annotations.Test;%0Aimport static org.testng.Assert.*;%0A%0Apublic class AutorunNoInvokeTest%0A  extends AbstractIntegrationTest%0A%7B%0A  @ArezComponent%0A  public static abstract class TestComponent%0A  %7B%0A    int _autorunCallCount;%0A%0A    @Autorun%0A    void autorun()%0A    %7B%0A      _autorunCallCount++;%0A    %7D%0A  %7D%0A%0A  @Test%0A  public void deferScheduleWillDelayAutorun()%0A  %7B%0A    final TestComponent component = new AutorunNoInvokeTest_Arez_TestComponent();%0A%0A    assertEquals( component._autorunCallCount, 1 );%0A%0A    final IllegalStateException exception = expectThrows( IllegalStateException.class, component::autorun );%0A    assertEquals( exception.getMessage(),%0A                  %22Autorun method named 'autorun' invoked but @Autorun annotated methods should only be invoked by the runtime.%22 );%0A    assertEquals( component._autorunCallCount, 1 );%0A  %7D%0A%7D%0A

Add integration test to verify that autorun can not be invoked directly