0

次のように、Atoum を使用してクラスの単体テストを行うことができます。

<?php

namespace vendor2\project2;

class helloWorld2
{
    public function say()
    {
        return 'Hello World!';
    }

     public function add($a,$b)
    {
        return ($a+$b);
        //return 'Hello World!';
    }
}
?>  

すべて問題なく、いくつかのテスト ケースを達成
しましたが、テストしたいクラスに require_once を追加すると、Atoum はそのクラスをテストできません。

<?php

namespace vendor2\project2;

$ServerRoot = realpath(__DIR__. '/..');
require_once $ServerRoot.'/db/dbTables/M4_Warrior.php';

class helloWorld2
{
    public function say()
    {
        return 'Hello World!';
    }

     public function add($a,$b)
    {
        return ($a+$b);
        //return 'Hello World!';
    }
}
?>

require_once で行をコメントすると、すべて問題あり
ません。なぜですか?

テストphpファイルも次のとおりです。

<?php

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

namespace vendor2\project2\tests\units;

$ServerRoot = realpath(__DIR__. '/../..');
require_once $ServerRoot.'/HandleCommands/helloWorld2.php';

use atoum;

/**
 * Test class for helloWorld.
 *
 * @author Vh80705
 */
class helloWorld2 extends atoum {

    // put your code here

    public function test1() {
        $true  = true;
        $false = false;

        $this
            ->boolean($true)
                ->isFalse();     // fails

    }    

    public function test2() {
        $true  = true;
        $false = false;

        $this
            ->boolean($false)
                ->isFalse();     // succeed        
    }    

    public function test3 ()
    {
        $this
            // creation of a new instance of the tested class
            ->given($this->newTestedInstance)

            ->then

                    // we test that the getHiAtoum method returns
                    // a string...
                    ->string($this->testedInstance->say())
                        // ... and that this string is the one we want,
                        // namely 'Hi atoum !'
                        ->isEqualTo('Hi atoum !')
        ;
    }    

    public function test4 ()
    {
        $this
            // creation of a new instance of the tested class
            ->given($this->newTestedInstance)

            ->then

                    // we test that the getHiAtoum method returns
                    // a string...
                    ->string($this->testedInstance->say())
                        // ... and that this string is the one we want,
                        // namely 'Hi atoum !'
                        ->isEqualTo('Hello World!')
        ;
    }    

    public function test5 ()
    {
        $this
            // creation of a new instance of the tested class
            ->given($this->newTestedInstance)

            ->then

                    // we test that the getHiAtoum method returns
                    // a string...
                    ->integer($this->testedInstance->add(1,2))
                        // ... and that this string is the one we want,
                        // namely 'Hi atoum !'
                        ->isEqualTo(3)
        ;
    }        

    public function test6 ()
    {
        $this
            // creation of a new instance of the tested class
            ->given($this->newTestedInstance)

            ->then

                    // we test that the getHiAtoum method returns
                    // a string...
                    ->integer($this->testedInstance->add(1,2))
                        // ... and that this string is the one we want,
                        // namely 'Hi atoum !'
                        ->isEqualTo(4)
        ;
    }        

    public function testSkipped() {
        $this->skip('This test was skipped');
    }
}
4

1 に答える 1

0

奇妙ですが、それは本当です!

Atoum が気にするのは?> PHP ファイルの最後? >
の 後には何もないはず 改行さえも

すべての PHP ファイルの?>をすべてスペースに置き換えたところ、問題は解決しました

于 2019-05-07T07:52:40.017 に答える