Как PHPUnit проверить метод без возвращаемого значения?

Я пытаюсь проверить методы из следующего класса, который я написал (есть больше функций, чем показано, в основном одна функция для каждого – это метод _ * ()):

class Validate { private static $initialized = false; /** * Construct won't be called inside this class and is uncallable from the outside. This prevents * instantiating this class. This is by purpose, because we want a static class. */ private function __construct() {} /** * If needed, allows the class to initialize itself */ private static function initialize() { if(self::$initialized) { return; } else { self::$initialized = true; //Set any other class static variables here } } ... public static function isString($string) { self::initialize(); if(!is_string($string)) throw new InvalidArgumentException('Expected a string but found ' . gettype($string)); } ... } 

Когда я проверяю, генерируют ли методы исключение из недопустимого ввода, он отлично работает! Однако, когда я проверяю, работает ли метод, как ожидается, PHPUnit жалуется, потому что у меня нет утверждений в тесте. Конкретная ошибка:

 # RISKY This test did not perform any assertions 

Тем не менее, я не имею никакого значения для утверждения, поэтому я не уверен, как это преодолеть.

Я читал некоторые о тестировании статических методов, но в основном это касается зависимостей между статическими методами. Кроме того, даже нестатические методы не могут иметь возвращаемого значения, поэтому как это исправить?

Для справки, мой тестовый код:

 class ValidateTest extends PHPUnit_Framework_TestCase { /** * @covers ../data/objects/Validate::isString * @expectedException InvalidArgumentException */ public function testIsStringThrowsExceptionArgumentInvalid() { Validate::isString(NULL); } /** * @covers ../data/objects/Validate::isString */ public function testIsStringNoExceptionArgumentValid() { Validate::isString("I am a string."); } } 

Одно из решений, на которое я пришел, – это следующее, основанное на примере 2.12 из главы 2 PHPUnit . Мне кажется, что он немного взломан, но это лучшее, что я нашел до сих пор. Кроме того, на основе этого обсуждения проблемы с PHPUnit Gitub кажется, что некоторые другие люди хотят эту функцию, но нет планов ее реализации.

Измените testIsStringNoExceptionArgumentValid () на следующее:

  /** * @covers ../data/objects/Validate::isString */ public function testIsStringNoExceptionArgumentValid() { try { Validate::isString("I am a string."); } catch (InvalidArgumentException $notExpected) { $this->fail(); } $this->assertTrue(TRUE); } в состоянии  /** * @covers ../data/objects/Validate::isString */ public function testIsStringNoExceptionArgumentValid() { try { Validate::isString("I am a string."); } catch (InvalidArgumentException $notExpected) { $this->fail(); } $this->assertTrue(TRUE); } 

Проверить функцию void с помощью assertNull :

  /** * @covers ../data/objects/Validate::isString */ public function testIsStringNoExceptionArgumentValid() { $this->assertNull( Validate::isString("I am a string.") ); }