JUnitユニットテスト(7)−JUnitの統合モード


JUnitユニットテスト(7)−JUnitの統合モード
JUnitはtestで始まるすべてのメソッドを自動的に実行しますが、その一部だけを実行したい場合はどうすればいいのでしょうか.また、1つのテストクラスに複数のテストメソッドが含まれ、各テストメソッドに複数の断言文が含まれていることを知っていますが、1つのテストクラスに他のテストクラスが含まれていますか.すなわち,複数のテストクラス間を統合できるかどうか.これらの問題はすべてJUnitの集積モードによって解決することができる.テストクラスに静的メソッドを追加する必要があります.public static Test Suite()は、実行するテストメソッドを入れることができます.Test Suite()メソッドがあれば、JUnitはtestで始まるすべてのメソッドを自動的に実行するのではなく、Test Suite()に列挙されたテストメソッドを直接実行します.他のテストクラスをこのメソッドに挿入して、複数のテストクラスの統合を実現することもできます.
import junit.framework;

public class TestComputer extends TestCase
{
	private Computer a;
	private Computer b;
	private Computer c;
	private Computer d;

	public TestComputer(String name) // 
	{
 	    super(name);    // super TestCase 
	}

	protected void setUp()
	{
	  a=new Computer(1,2);
	  b=new Computer(2147483647,1);
	  c=new Computer(2,2);
	  d=new Computer(2,0);
	}

	public void testadd()
	{
	  assertEquals(3,a.add());
	  assertEquals(-2147483648,b.add());
	}

	public void testminus()
	{
	  assertEquals(-1,a.minus());
	}

	public void testmultiply()
	{
	  assertEquals(4,c.multiply());
	}

	public void testdivide()
	{
	  assertEquals(0,d.divide());
	}

	public static Test suite()
	{
	  TestSuite suite=new TestSuite();
	  suite.addTest(new TestComputer("testadd"));
	  suite.addTest(new TestComputer("testminus"));
	  return suite;
	}
}

以上は,テストメソッドの統合を行い,テストクラスの統合も可能である(前述した).
import junit.framework;

public class TC extends TestCase
{
	public TC(String name) // 
	{
 	 super(name);
	}

	protected void setUp()
	{
	  a=new Computer(1,2);
	  b=new Computer(2147483647,1);
	  c=new Computer(2,2);
	  d=new Computer(2,0);
	}

	public static Test suite()
	{
	  TestSuite suite=new TestSuite();
	  suite.addTestSuite(TestComputerTwo.class);  // TestComputerTwo 
	  suite.addTest(TestComputer.suite());
	  return suite;
	}
}
このクラスが実行されると、TestComputerTwoクラスの下にあるすべてのテストメソッドと、TestComputerクラスのsuite()メソッドに含まれるテストメソッドが実行されます.