title: Should JUnit3 TestSuite really be used like this?
body: <p>I couldn't recall how to use JUnit3 <code>TestSuite</code> and after some Googling found this</p>
  
  <pre><code>public class MyTestsuite extends TestSuite {
      public static Test suite() {
          final TestSuite s = new TestSuite();
          s.addTestSuite(Test1.class);
          s.addTestSuite(Test2.class);
          return s;
      }
  }
  </code></pre>
  
  <p>It seems to work, but looks very strange to me:</p>
  
  <ul>
  <li>Why should I create a new instance when being in a suitable class?</li>
  <li>How is anybody supposed to find this out? In the <a href="http://junit.sourceforge.net/junit3.8.1/javadoc/junit/framework/TestSuite.html" rel="nofollow">javadoc</a> there's nothing like "write a <em>static</em> method called <em>suite</em>".</li>
  <li>Why not something as simple as this:</li>
  </ul>
  
  <p>&nbsp;</p>
  
  <pre><code>public class MyTestsuite extends AbstractTestSuite {
      @Override
      public void suite() {
          add(Test1.class);
          add(Test2.class);
      }
  }
  </code></pre>
  
  <p><em>Basically, I'm curious if doing it like in my first example is really the way to go. Moreover, I wonder what design decisions might be behind such an interface.</em></p>
  
  <hr>
  
  <p>This works too and is maybe a bit less strange:</p>
  
  <pre><code>public class MyTestsuite extends TestSuite {
      MyTestsuite() {
          super(Test1.class, Test2.class);
      }
      public static Test suite() {
          return new TestSuite();
      }
  }
  </code></pre>