バグ報告 > その他 > PHPUnitによるテストが失敗する |
その他
フラット表示 | 前のトピック | 次のトピック |
投稿者 | スレッド |
---|---|
snitta |
投稿日時: 2014/1/31 14:13
対応状況: −−−
|
一人前 登録日: 2013/10/3 居住地: 島根県 投稿: 100 |
Re: PHPUnitによるテストが失敗する nanasess 様
早速のご回答ありがとうございます! 引用: どうしても character_set_client を変更できない環境は別として、通常 PHPUnit を実行する環境(ローカル環境や CIサーバーなど)は設定できると思いますので、my.cnf などで、character_set_client を正しく設定するのが良いのではないでしょうか。 テスト環境の不備という点でしたらまさにおっしゃられる通りですが、今回の問題はエンコーディングだけではなく、テスト毎にテスト条件が変わってしまうという所にあると思います。 具体的には SC_Query のコンストラクタで MDB2::setCharset() を呼んでいますが、MySQL/PostgreSQLの実装では mysql_set_charset() や pg_set_client_encoding() を実行するだけで再接続の考慮はされていません。 同じ Common_TestCase::setUp() を通しても初回のテストではエンコーディングが指定してある、二回目以降のテストでは指定されていない、というのは問題ではないでしょうか…。 参考にした個所はこちらです。 http://svn.ec-cube.net/open_trac/browser/branches/version-2_13-dev/data/class/SC_Query.php?rev=23329#L82 http://svn.ec-cube.net/open_trac/browser/branches/version-2_13-dev/data/module/MDB2/Driver/mysql.php?rev=23329#L626 http://svn.ec-cube.net/open_trac/browser/branches/version-2_13-dev/data/module/MDB2/Driver/pgsql.php?rev=23329#L538 引用: テストケースの観点からすると、テストとは直接関係のない設定を、テストプログラムにコーディングするのは、あまり良くありません。 勉強になります。確かにあまり気持ちのいいやり方ではないですね。 これはPHPUnitとMDB2の問題ですので phpunit.xml 辺りに追い出す方法がないか探しましたが見つけられませんでした。 # グローバル変数バックアップ機能の切り替えだけはありました。 http://phpunit.de/manual/3.7/ja/appendixes.annotations.html#appendixes.annotations.backupGlobals
|
フラット表示 | 前のトピック | 次のトピック |
題名 | 投稿者 | 日時 |
---|---|---|
PHPUnitによるテストが失敗する | snitta | 2014/1/31 12:25 |
Re: PHPUnitによるテストが失敗する | nanasess | 2014/1/31 13:22 |
» Re: PHPUnitによるテストが失敗する | snitta | 2014/1/31 14:13 |
Re: PHPUnitによるテストが失敗する | nanasess | 2014/1/31 16:29 |
Re: PHPUnitによるテストが失敗する | snitta | 2014/1/31 19:27 |
Re: PHPUnitによるテストが失敗する | snitta | 2014/2/2 22:03 |