今PHPUnitのDBUnitを学んでいるところなのですが、
PHPUnit_Extensions_Database_TestCaseを継承させて、xmlファイルから実行させたところ
Fatal error: Class 'PHPUnit_Extensions_Database_TestCase' not found in
クラスがないよということなのでしょうが、DBUnitもインストールしていてコード自体も間違っているとは思えません。
PHP
1<?php 2// テスト対象のクラスを定義 3class Language 4{ 5 protected $db; 6 7 // PDOによるデータベース接続をインスタンス生成時に受け取り、プロパティに保存 8 public function __construct($db) 9 { 10 $this->db = $db; 11 } 12 13 // テスト対象メソッド 14 public function insert($language) 15 { 16 // レコードの追加 17 $sql = 'INSERT INTO example (language) VALUES (:language)'; 18 $prepare = $this->db->prepare($sql); 19 $prepare->bindValue(':language', $language, PDO::PARAM_STR); 20 $prepare->execute(); 21 } 22} 23 24 25?>
PHP
1<?php 2require_once 'Language.php'; 3 4// データベーステスト用のクラスを継承 5class LanguageTest extends PHPUnit_Extensions_Database_TestCase 6{ 7 protected $db; 8 9 // データベースの接続処理 10 protected function getConnection() 11 { 12 if (! $this->db) { 13 $this->db = new PDO(DB_DSN, DB_USERNAME, DB_PASSWORD); 14 } 15 16 return $this->createDefaultDBConnection($this->db); 17 } 18 19 // テストに使用するデータセットを読み込む処理 20 protected function getDataSet() 21 { 22 $dataset = new PHPUnit_Extensions_Database_DataSet_YamlDataSet('LanguageTest_fixture.yaml'); 23 24 return $dataset; 25 } 26 27 // insert()メソッドをテストするメソッド 28 public function testInsertLanguage() 29 { 30 // Languageインスタンスを生成し、insert()メソッドを実行 31 $Language = new Language($this->db); 32 $Language->insert('Lisp'); 33 34 // 行数が6行になっていることを確認 35 $test = $this->getConnection()->getRowCount('example'); 36 $this->assertEquals(6, $test); 37 38 // データ挿入後のデータセットを読み込み 39 //$after_dataset = new PHPUnit_Extensions_Database_DataSet_YamlDataSet('LanguageTest_after_insert.yaml'); 40 41 // ファイルから読み込んだデータセットから、データテーブルを取得 42 $expected = $after_dataset->getTable('example'); 43 44 // データベースから、データ挿入後の実際のテーブルを作成 45 $test = $this->getConnection()->createQueryTable('example', 'SELECT * FROM example'); 46 47 // 2つのデータテーブルを比較 48 $this->assertTableEqual($expected, $test); 49 } 50} 51 52 53?>
下のコードは実行時のxmlファイルです。
xml
1<?xml version="1.0" encoding="UTF-8"?> 2<phpunit> 3 <php> 4 <const name="DB_DSN" value="mysql:host=localhost;dbname=book_db;charset=utf8"/> 5 <count name="DB_USERNAME" value="user"/> 6 <count name="DB_PASSWORD" value="password"/> 7 </php> 8</phpunit>
因みに、下のコードはcomposer.jsonの設定ファイルです。
Json
1{ 2 "require": { 3 "phpunit/phpunit": "4.5.*", 4 "phpunit/dbunit": ">=1.2" 5 } 6}
環境:
MAMP
PHP: version 5.6.10

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/11/15 04:52