0

単体テストを実行せずにレポートを作成したいと思います。テスト ソース コードのみを分析し、どのメソッドが呼び出されたかを確認したいと考えています。私のテストでは、JUnit、Arquillian を使用しています。それらを外部サーバーで実行しましたが、arquillian-jacoco 拡張機能の使用に問題がありました。インストルメンテーションの後、アプリケーションが正しく起動できませんでした。そのような機能を提供するツールはありますか?

4

3 に答える 3

2

コード カバレッジは、どのメソッドが呼び出されるかだけではありません。もう 1 レベル深く進み、テスト ケース中にメソッド内のどの行がカバーされた (実際に実行された) かをチェックします。

したがって、単にコードの一部としてメソッドを呼び出すということではなく、実行フローのいずれかが実際にそのメソッドを呼び出すかどうかということになります。また、実行フローはほとんどテスト ケースの入力に依存します。したがって、それらを実行しない限り、コード カバレッジ ツールはほとんど無知です。

次のようなコードがあるとします。

if (size > 0) {
    this.array = new Integer[size];
} else {
    String msg = "Input size must be > 0";
    logAndThrow(msg, new IllegalArgumentException(msg));
}

さて、あなたが効果的に言っているのはlogAndThrow()、このクラスをsize <= 0.

于 2013-06-26T07:39:13.783 に答える
1

すでに素晴らしい答えがありますが、多くのことはコンパイル時に単純に判断できないため、実行時にしか特定できないことを付け加えたいと思います。ポリモーフィズムはその好例です。

于 2013-06-26T08:02:42.610 に答える
0

基本的に各単体テストからコードをスライスすることにより、コードを実行せずに静的分析を介してコード カバレッジを取得できます。テクニカル ペーパー「テスト カバレッジの静的推定」を参照してください。

そうは言っても、現在、このアイデアを実装する制作ツールはないと思います。

于 2013-06-26T10:53:40.920 に答える