Menu

FrontPage

Eclipseプラグイン
Eclipse小技集
リファクタリング講座
テスティングフレームワーク JUnit
MSDEについて



The 20 newest affair
2010-09-092010-09-082010-09-072010-09-062010-09-012010-08-312010-08-272010-08-242010-08-232010-08-172010-08-162010-07-302010-07-212010-07-132010-06-272010-06-182010-06-172010-06-16

デフォルトコンストラクタのCoverageReport


HelloWorldのテストで使用したテストを使用して、もう一度テストを実行してみます。

テスト対象:HelloWorld.java
  
1 public class HelloWorld {
2
3  public static void main(String args[]) {
4   System.out.println("HelloWorld.");
5  }
6 }
   

テストケース:HelloWorldTest.java
  
01 import jp.co.dgic.testing.framework.DJUnitTestCase;
02
03 public class HelloWorldTest extends DJUnitTestCase {
04
05  public HelloWorldTest(String name) {
06   super(name);
07  }
08
09  protected void setUp() throws Exception {
10   super.setUp();
11  }
12
13  protected void tearDown() throws Exception {
14   super.tearDown();
15  }
16
17  public void testMain1() {
18   HelloWorld.main(null);
19
20   String arg = (String) getArgument("java.io.PrintStream", "println", 0);
21   assertEquals("HelloWorld.", arg);
22  }
23 }
   


このテストを実行すると、

  1. テストは通るはずである。
  2. CoverageReportは100%になるはずである。

ということが予想できます。

では実行。

[636F6E7374312E706E67.png]



テストは通りました。
次にCoverageReportです。

[636F6E7374322E706E67.png]



100%になっていません。
HelloWorldのソースを開いてみると

[636F6E7374332E706E67.png]


1行目が未実行と言われています。

これは、コンストラクタのテストが通っていないということを指しています。

今回のテスト対象ソースにコンストラクタは存在しません。
よって、コンパイル時にデフォルトコンストラクタが生成されてclassファイルが出来上がります。
そのclassファイルに対してJCoverageがいろいろと操作を行い、結果的に生成されたデフォルトコンストラクタ部分が未実行になったが、
ソースにマーキングする際にコンストラクタ部分が存在しないため、1行目にマーキングされてしまったのです。

では、先ほどのテスト対象クラスにコンストラクタを加えてみます。

  
1 public class HelloWorld {
2
3  public HelloWorld() {
4  }
5
6  public static void main(String args[]) {
7   System.out.println("HelloWorld.");
8  }
9 }
   


テストを実行すると・・・

[636F6E7374342E706E67.png]

ちゃんとコンストラクタの部分にマーキングされました!

ということで、

CoverageReportを100%にするためにはコンストラクタの存在を意識しなければいけない。

ということになります。


Attached File: [Attached File All List] const1.png[34KB] const2.png[40KB] const3.png[68KB] const4.png[69KB]

Lastmodified: 2004-10-18 (月) 13:43:43 (2151d)