2013-07-23 38 views
0

我有幾個方法使用相同的參數(user_id)。在這些方法中,我測試傳遞了有效八位整數的參數。 是否有可能對測試驗證傳遞的參數進行分組(?)測試?測試傳遞參數的正確驗證的幾種方法

Class Hello{ 
public function test($user_id=0){ 
if (!preg_match('/^[0-9]{8}$/', $user_id)) return false; 
do stuff... 
} 
public function make($user_id=0){ 
if (!preg_match('/^[0-9]{8}$/', $user_id)) return false; 
do stuff... 
} 
public function find($user_id=0){ 
if (!preg_match('/^[0-9]{8}$/', $user_id)) return false; 
do stuff... 
} 
} 

和測試文件:

class HelloTest extends PHPUnit_Framework_TestCase { 

//Looking for something simpler to replace that: 
     // zwraca FALSE jesli dlugosc inna niz 8 znakow 
     $this->assertFalse(Hello::test('1'), 'Dlugosc user_id musi byc 8 znakow, nie 1.'); 
     $this->assertFalse(Hello::test(0), 'Dlugosc user_id musi byc 8 znakow, nie 1 (zero).'); 
     $this->assertFalse(Hello::test('7777777'), 'Dlugosc user_id musi byc 8 znakow, nie 7.'); 

     $this->assertFalse(Hello::make('1'), 'Dlugosc user_id musi byc 8 znakow, nie 1.'); 
     $this->assertFalse(Hello::make(0), 'Dlugosc user_id musi byc 8 znakow, nie 1 (zero).'); 
     $this->assertFalse(Hello::make('7777777'), 'Dlugosc user_id musi byc 8 znakow, nie 7.'); 

     $this->assertFalse(Hello::find('1'), 'Dlugosc user_id musi byc 8 znakow, nie 1.'); 
     $this->assertFalse(Hello::find(0), 'Dlugosc user_id musi byc 8 znakow, nie 1 (zero).'); 
     $this->assertFalse(Hello::find('7777777'), 'Dlugosc user_id musi byc 8 znakow, nie 7.'); 
} 
+0

您是否收到任何人接受的令人滿意的答案,或者仍然存在與這些建議有關的問題? –

回答

1

PHPUnit Manual, under Data Providers可以使用數據提供值傳遞給測試。我這樣做,幷包括預期的響應值。

<?php 
class HelloTest extends PHPUnit_Framework_TestCase 
{ 
    public function UserIdDataProvider() 
    { 
     return array(
      array('1', FALSE, 'Dlugosc user_id musi byc 8 znakow, nie 1.'), 
      array(0, FALSE, 'Dlugosc user_id musi byc 8 znakow, nie 1 (zero).'), 
      array('7777777', FALSE, 'Dlugosc user_id musi byc 8 znakow, nie 7.'), 
      array('88888888', TRUE, ''), 
     ); 
    } 

    /** 
    * @dataProvider UserIdDataProvider 
    */ 
    public function testUserIdTest($UserId, $Result, $Message) 
    { 
     $this->assertEquals($Result, Hello::test($UserId), $Message); 
    } 

    /** 
    * @dataProvider UserIdDataProvider 
    */ 
    public function testUserMake($UserId, $Result, $Message) 
    { 
     $this->assertEquals($Result, Hello::make($UserId), $Message); 
    } 

    /** 
    * @dataProvider UserIdDataProvider 
    */ 
    public function testUserIdFind($UserId, $Result, $Message) 
    { 
     $this->assertEquals($Result, Hello::find($UserId), $Message); 
    } 

} 
?> 
相關問題