title: Why is throw new SkipException() skipping all my methods?
body: <p>Why is throw new SkipException() skipping all my methods across all classes?</p>
  
  <ol>
  <li>Class one has a method which fails therefore the remaining methods in that class are skipped and the skipcounter is set to 0.</li>
  <li>Class two should execute all methods and all methods should pass in class two because the skip counter was set to 0 and after class one was executed. </li>
  </ol>
  
  <p>The following code seems to skip all methods even though there is only one assert.fail which is contained in class one?</p>
  
  <p><strong>Test Base:</strong></p>
  
  <pre><code>import org.testng.annotations.BeforeMethod;
  import org.testng.annotations.AfterMethod;
  import org.testng.annotations.BeforeClass;
  import org.testng.ITestResult;
  import org.testng.SkipException;
  
    public class TestBase {
          static int numb = 0;
        @BeforeMethod
        public void beforeMethod() {
            if(numb == 1) {
                  throw new SkipException("Skipping this test");
            }  
        }
  
        @AfterMethod
        public void afterMethod(ITestResult testResult) {
              if (testResult.getStatus() == ITestResult.FAILURE) {
                  numb = 1;
              }
        }
  
        @BeforeClass
        public void beforeClass() {
            TestBase.numb = 0;
        }
  </code></pre>
  
  <p><strong>Test1:</strong></p>
  
  <pre><code>import org.testng.annotations.Test;
  
  public class Test1 extends TestBase {
      @Test(priority = 1)
      public void test1() throws Exception {
          Assert.fail();
      }
  
      @Test(priority = 2)
      public void test2() throws Exception {
          System.out.println("method2");
      }
  
      @Test(priority = 3)
      public void test3() throws Exception {
          System.out.println("method3");
      }
  }
  </code></pre>
  
  <p><strong>Test2:</strong></p>
  
  <pre><code>import org.testng.annotations.Test;
  
  public class Test2 extends TestBase {
      @Test(priority = 1)
      public void test1() throws Exception {
          System.out.println("method4");
      }
  
      @Test(priority = 2)
      public void test2() throws Exception {
          System.out.println("method5");
      }
  
      @Test(priority = 3)
      public void test3() throws Exception {
          System.out.println("method6");
      }
  }
  </code></pre>
  
  <p><a href="https://i.stack.imgur.com/2sNQM.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/2sNQM.png" alt="enter image description here"></a></p>
  
  <p>Console output:</p>
  
  <pre><code>..
  ... TestNG 6.9.10 by Cédric Beust (cedric@beust.com)
  ...
  
  [TestNG] Running:
    C:\Users\Gianni.Bruno\Desktop\BuyAGiftFramework\BuyAGiftFramework\Test.xml
  
  [TestRunner] Starting executor for test BuyAGift Automation Tests with time out:2147483647 milliseconds.
  SKIPPED CONFIGURATION: @BeforeMethod beforeMethod
  SKIPPED CONFIGURATION: @AfterMethod afterMethod
  SKIPPED CONFIGURATION: @BeforeMethod beforeMethod
  SKIPPED CONFIGURATION: @AfterMethod afterMethod
  SKIPPED CONFIGURATION: @BeforeClass beforeClass
  SKIPPED CONFIGURATION: @BeforeMethod beforeMethod
  SKIPPED CONFIGURATION: @AfterMethod afterMethod
  SKIPPED CONFIGURATION: @BeforeMethod beforeMethod
  SKIPPED CONFIGURATION: @AfterMethod afterMethod
  SKIPPED CONFIGURATION: @BeforeMethod beforeMethod
  SKIPPED CONFIGURATION: @AfterMethod afterMethod
  FAILED: test1
  junit.framework.AssertionFailedError
      at junit.framework.Assert.fail(Assert.java:47)
      at junit.framework.Assert.fail(Assert.java:53)
      at BuyAGiftFramework.test.Test1.test1(Test1.java:9)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
      at java.lang.reflect.Method.invoke(Unknown Source)
      at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:86)
      at org.testng.internal.Invoker.invokeMethod(Invoker.java:643)
      at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:820)
      at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1128)
      at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:129)
      at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:112)
      at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
      at java.lang.Thread.run(Unknown Source)
  
  SKIPPED: test2
  SKIPPED: test3
  SKIPPED: test1
  SKIPPED: test2
  SKIPPED: test3
  
  ===============================================
      BuyAGift Automation Tests
      Tests run: 6, Failures: 1, Skips: 5
      Configuration Failures: 0, Skips: 11
  ===============================================
  
  
  ===============================================
  BuyAGift_Automation_Scripts_by_GBruno
  Total tests run: 6, Failures: 1, Skips: 5
  Configuration Failures: 0, Skips: 11
  ===============================================
  
  [TestNG] Time taken by org.testng.reporters.JUnitReportReporter@366e2eef: 14 ms
  [TestNG] Time taken by org.testng.reporters.XMLReporter@1936f0f5: 16 ms
  [TestNG] Time taken by org.testng.reporters.SuiteHTMLReporter@3f2a3a5: 32 ms
  [TestNG] Time taken by org.testng.reporters.jq.Main@614c5515: 94 ms
  [TestNG] Time taken by [FailedReporter passed=0 failed=0 skipped=0]: 16 ms
  [TestNG] Time taken by org.testng.reporters.EmailableReporter2@6537cf78: 19 ms
  </code></pre>
  
  <p>Test Execution XML:</p>
  
  <pre><code>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
  &lt;!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" &gt;
  &lt;suite name="Automation_Scripts_by_GB" verbose="2" parallel="classes" thread-count="1"&gt;
  
      &lt;test name="BuyAGift Automation Tests"&gt;
          &lt;packages&gt;
              &lt;package name="BuyAGiftFramework.test.*"&gt;&lt;/package&gt;
          &lt;/packages&gt;
      &lt;/test&gt;
  &lt;/suite&gt;
  </code></pre>