質問編集履歴
1
`Risky: 3`ご指摘へのリプライとして、質問に「補足」「コード」を追記しました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -40,4 +40,43 @@
|
|
40
40
|
それと、各ケース内でログ出力だけではなく簡単なアサーションを1つ実行してもいます。つまりテストランナーが実行事前にケース内を解釈して実行不要(アサーションなし)だから実行しておらずログ出力されない、ということもないと考えています。
|
41
41
|
|
42
42
|
|
43
|
-
なんとなく、各ケース内でテストコンテキスト?を毎回初期化すると良いような感覚を持ちました。標題と少しズレますが、複数のケースがあって連続して実行されるとき、ケース内での状態はコンテキストとして次のケースに持ち越されて実行されているのでしょうか。初期化方法などあるでしょうか。
|
43
|
+
なんとなく、各ケース内でテストコンテキスト?を毎回初期化すると良いような感覚を持ちました。標題と少しズレますが、複数のケースがあって連続して実行されるとき、ケース内での状態はコンテキストとして次のケースに持ち越されて実行されているのでしょうか。初期化方法などあるでしょうか。
|
44
|
+
|
45
|
+
|
46
|
+
### 補足
|
47
|
+
|
48
|
+
`Risky: 3` は、「テストケース内にアサーションが1つもない(のでパスしているとは言えず危険な)」ケースが3つあるという指摘です。
|
49
|
+
ログ出力は入れても入れなくても同じで、`$this->assertTrue(true);`のようなアサーションを入れると指摘が収まります。
|
50
|
+
また、アサーションを入れて`Risky`を抑えても、最初に実行されるケースでしかログ出力されない状況は変わりません。
|
51
|
+
|
52
|
+
例として単純化するためにアサーションを入れませんでした。
|
53
|
+
`Tests: 3, Assertions: 0, Risky: 3.`
|
54
|
+
の `Risky` は問題でなく、`Tests: 3`で期待どおり3ケースすべて実行されている(のにログ出力は最初だけな)ことをお伝えするため示しております。
|
55
|
+
|
56
|
+
|
57
|
+
### コード
|
58
|
+
|
59
|
+
以下は当件テストコード全文です。
|
60
|
+
Laravel インストール時につくられる `ExampleTest.php` のメソッドだけを編集したコードになります。
|
61
|
+
|
62
|
+
```php
|
63
|
+
<?php
|
64
|
+
|
65
|
+
namespace Tests\Unit;
|
66
|
+
|
67
|
+
use Tests\TestCase;
|
68
|
+
use Illuminate\Foundation\Testing\RefreshDatabase;
|
69
|
+
|
70
|
+
class ExampleTest extends TestCase
|
71
|
+
{
|
72
|
+
public function testA() {\Log::info('A');$this->assertTrue(true);}
|
73
|
+
public function testB() {\Log::info('B');$this->assertTrue(true);}
|
74
|
+
public function testC() {\Log::info('C');$this->assertTrue(true);}
|
75
|
+
}
|
76
|
+
```
|
77
|
+
|
78
|
+
ご興味持って頂けたかたは、上記全文をそのまま `プロジェクトディレクトリ/tests/SampleTest.php` のようなファイル名で保存して実行してみてください。
|
79
|
+
`storage/logs/`内のログファイルには`"A"`としか出力されないはずです。
|
80
|
+
```bash
|
81
|
+
$ ./vendor/bin/phpunit tests/SampleTest
|
82
|
+
```
|