2

次の簡単な例のようなインターフェイスを単体テストするにはどうすればよいですか。

interface My_App_My_Interface
{
    /**
     * @return int
     */
    public function getInteger();

    /**
     * @return string
     */
    public function getString();
}

また、これは私のアプリケーションのテストディレクトリでどのように編成されますか:

tests > My > App > My > InterfaceTest??

4

2 に答える 2

4

インターフェイスをテストしません。実装をテストします。インターフェイスが必要な機能をすべて提供しているかどうかを(人間が)チェックする必要があります

于 2012-12-08T14:38:13.367 に答える
0

ピオトレックが言ったように、インターフェイスは単なるコントラクトであるため、インターフェイスをテストすることはありません。そこにはコードはありません。

たとえば、atoum テスト フレームワークを使用すると、インターフェイスを実装するクラスを作成できます。

namespace mageekguy\atoum\tests;

class TestMyInterfaceImplementation extends atoum\test{
    public function test__construct(){
        $object = new MyObject();
        $this->object($object)->instanceof('MyInterface');
    }
    public function test_getInteger(){
       $object = new MyObject();
        $this->integer($object->getInteger);
    }
 }

インターフェイスは単に抽象メソッドを提供するだけなので、インスタンス化できないため、テストを作成できません。

于 2012-12-08T14:50:32.670 に答える