2017-06-21 7 views
0

統合テストでは、テスト結果を再利用したい。依存関係は注釈によって定義されます。依存テストを実行するには、以前のテストの結果を使用可能にする必要があります。したがって、テストは一定の順序で実行する必要があります。そうでなければ、他のテストに依存するテストはスキップされます。テストが固定された順序で実行されるように、テストスイートが定義されています。依然として依存関係のテストはスキップされます。何故ですか?異なるテストケース間の依存関係を持つphpunitスキップテスト

ATest.php:

<?php 

use PHPUnit\Framework\TestCase; 

class ATest extends TestCase 
{ 
    public function testA() 
    { 
     self::assertTrue(true); 
     return $this; 
    } 
} 

BTest.php:

<?php 

use PHPUnit\Framework\TestCase; 

class BTest extends TestCase 
{ 

    /** 
    * @depends ATest::testA() 
    */ 
    public function testB($a) 
    { 
     self::assertTrue(true); 
    } 
} 

phpunit.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<phpunit 
     verbose="true" 
> 
    <testsuites> 
     <testsuite name="dependency"> 
      <file>ATest.php</file> 
      <file>BTest.php</file> 
     </testsuite> 
    </testsuites> 
</phpunit> 

phpunit --testsuite dependency

PHPUnit 5.5.7 Sebastian Bergmannと 投稿者によると、

ランタイム: /phpunit.xml

.S 2 /2(100%)

時間:49ミリ秒、メモリ:4.00メガバイト

Xdebugの2.5.4に構成されたPHP 7.1.5

スキップされたテストが1つありました。

1)BTest :: testBこのテストは、 "ATest :: testA()"が通過するかどうかに依存します。

OKですが、不完全な、スキップされた、または危険なテストです!テスト:1、アサーション:1、 スキップ:1.

答えて

2

異なるテストケースのテストに依存するテストはできません。テストは、同じテストケースに含める必要があります。テストはテストケースに含まれていないため、失敗したテストのように扱われ、テストを実行するとテストはスキップされます。

依存関係が機能するためには、テストを1つのテストにまとめる必要があります。この理由の

https://phpunit.de/manual/current/en/writing-tests-for-phpunit.html#writing-tests-for-phpunit.test-dependencies

一部は、あなたのテストのそれぞれを単離し、任意の順序で実行できるようにしなければならないということです。テストが別のテストケース内のテストに依存することは、テストファイルが特定の順序で実行される必要があることを意味します。これは、循環テストの依存関係を持つことで非常に簡単に複雑になる可能性があります。

さらに、テストケースに含まれていないテストに影響を与えることがあります。これはテストを維持するのに悪夢につながる可能性があります。

関連する問題