質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

composer

Composerとは、PHP5.3.2以上で使用可能なパッケージ管理ツールです。指定ディレクトリ内だけでパッケージ管理します。

Q&A

解決済

1回答

4206閲覧

PHPUnit ターミナルにて実行コマンド "vendor/bin/phpunit test/" 実行すると "Cannot open file" と表示される

1h_m

総合スコア19

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

composer

Composerとは、PHP5.3.2以上で使用可能なパッケージ管理ツールです。指定ディレクトリ内だけでパッケージ管理します。

0グッド

0クリップ

投稿2020/03/30 02:51

開発環境
macOS ver.10.15.3
XAMPP 7.3.12-0

独学でphpを勉強している者です。
ローカル環境で作成している自作アプリにPHPUnitを使用したいと思いcomposerに追加しました。

また、
pbook/PHPUnitCourse/src/PictureBook.php というテストの対象ファイルを作り、
pbook/PHPUnitCourse/tests/PictureBookTest.php というテストケース
を作成しました。

ターミナルに

vendor/bin/phpunit PHPUnitCourse/tests/

と実行コマンドを入力すると、

PHPUnit 9.0.1 by Sebastian Bergmann and contributors.

Cannot open file "/Applications/XAMPP/xamppfiles/htdocs/pbook/./tests/bootstrap.php".

とメッセージが表示され、テストが実行できません。

実行時のカレントディレクトリは以下になります。

/Applications/XAMPP/xamppfiles/htdocs/pbook

「ファイルが開けない」と言われているので、パスの指定がどこかおかしい箇所があるのでしょうか。
PHPUnitの仕組み自体理解が浅く、的が絞り切れないのですが、テストを実行するにはどこを修正すれば良いでしょうか。

よろしくお願いいたします。

pbook/PHPUnitCourse/src/PictureBook.php

php:

1namespace PictureBook; 2 3class PictureBook { 4 //$a + $b を返す 5 public function Add($a, $b) { 6 return $a + $b; 7 } 8 9 //$a - $b を返す 10 public function Sub($a, $b) { 11 return $a + $b; 12 } 13} 14

pbook/PHPUnitCourse/tests/PictureBookTest.php

php:

1<?php 2require_once('./../vendor/autoload.php'); 3 4class PictureBookTest extends PHPUnit\Framework\TestCase { 5 public function test_add() { 6 $sample = new PictureBook\PictureBook(); 7 $this->assertEquals(10, $sample->Add(4, 6)); 8 } 9 10 public function test_sub() { 11 $sample = new PictureBook\PictureBook(); 12 $this->assertEquals(1, $sample->Sub(7, 6)); 13 } 14} 15

pbook/composer.json

php

1{ 2 "require": { 3 "monolog/monolog": "^1.25" 4 }, 5 "require-dev": { 6 "phpunit/phpunit": "^9.0" 7 } 8} 9 10

pbook/vendor/bin/phpunit

php

1#!/usr/bin/env php 2<?php declare(strict_types=1); 3/* 4 * This file is part of PHPUnit. 5 * 6 * (c) Sebastian Bergmann <sebastian@phpunit.de> 7 * 8 * For the full copyright and license information, please view the LICENSE 9 * file that was distributed with this source code. 10 */ 11 12if (version_compare('7.3.0', PHP_VERSION, '>')) { 13 fwrite( 14 STDERR, 15 sprintf( 16 'This version of PHPUnit is supported on PHP 7.3, PHP 7.4, and PHP 8.0.' . PHP_EOL . 17 'You are using PHP %s (%s).' . PHP_EOL, 18 PHP_VERSION, 19 PHP_BINARY 20 ) 21 ); 22 23 die(1); 24} 25 26if (!ini_get('date.timezone')) { 27 ini_set('date.timezone', 'UTC'); 28} 29 30foreach (array(__DIR__ . '/../../autoload.php', __DIR__ . '/../vendor/autoload.php', __DIR__ . '/vendor/autoload.php') as $file) { 31 if (file_exists($file)) { 32 define('PHPUNIT_COMPOSER_INSTALL', $file); 33 34 break; 35 } 36} 37 38unset($file); 39 40if (!defined('PHPUNIT_COMPOSER_INSTALL')) { 41 fwrite( 42 STDERR, 43 'You need to set up the project dependencies using Composer:' . PHP_EOL . PHP_EOL . 44 ' composer install' . PHP_EOL . PHP_EOL . 45 'You can learn all about Composer on https://getcomposer.org/.' . PHP_EOL 46 ); 47 48 die(1); 49} 50 51$options = getopt('', array('prepend:')); 52 53if (isset($options['prepend'])) { 54 require $options['prepend']; 55} 56 57unset($options); 58 59require PHPUNIT_COMPOSER_INSTALL; 60 61PHPUnit\TextUI\Command::main(); 62

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

実行ディレクトリ以下に phpunit.xml phpunit.xml.dist などの設定ファイルがないでしょうか?
そこの bootstrap 設定に存在しないファイルを書いている可能性があります

3. XML 設定ファイル
3. コマンドラインのテストランナー

投稿2020/03/30 05:32

aaharu

総合スコア441

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

1h_m

2020/03/30 06:53

ご回答ありがとうございます。 `phpunit.xml`という設定ファイルがpbook/にありました。ご指摘の通り、存在しないファイルを記述していたようです。 以下のように修正を加えたのですが、現状まだエラーが表示されてしまいます。 > phpunit.xml ```xml: <?xml version="1.0"?> <phpunit bootstrap="PHPUnitCourse/tests/bootstrap.php" colors="true" convertErrorsToExceptions="true" convertNoticesToExceptions="true" convertWarningsToExceptions="true" verbose="true" stopOnFailure="true" processIsolation="false" backupGlovals="false" syntaxCheck="true" > <testsuite name="sample tests"> <!-- (1) --> <directory>PHPUnitCourse/tests</directory>    <!-- (2) --> </testsuite> </phpunit> ``` 実行コマンド > vendor/bin/phpunit PHPUnitCourse/tests/ エラーメッセージ >Cannot open file "/Applications/XAMPP/xamppfiles/htdocs/pbook/PHPUnitCourse/tests/bootstrap.php". bootstrapに設定するのはテストしたいファイルだと考えたんですが上記のファイル指定だとどこが違うのでしょうか。 そもそも何のファイルを指定する場所なのでしょうか。 また、(2)のdirectoryタグも同様に、何のファイルを指定すれば良いでしょうか。 (1)のtestsuite name は何の名前を指定する場所でしょうか。 リンクも貼っていただいてありがとうございます。理解が乏しくすみません。こちらももう少し根気強く読んでみます。 よろしくお願いします。
aaharu

2020/03/30 07:24 編集

XML設定ファイルは細かい設定が可能ですが、簡単なものであればコマンドラインでのオプションで解決できます。 今回ただテストを実行したいだけであればphpunit.xmlは不要で、ファイルを消した状態で再度コマンド実行すればいいのではないかと思います。 bootstrap はPHPUnitの実行時の最初に実行したいものを書きます。よくあるのはテスト用のオートローダーの設定とか、モックの定義とかそういうのを書いたりします。
1h_m

2020/03/30 10:57

phpunit.xmlを削除して試したところ、コマンドを正常に実行する事ができました。 ご指摘ありがとうございました。大変助かりました。 少しずつ慣れてきたら今回省いた設定にも挑戦していきたいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問