テストはローカルでは通るのにオンラインでは通らない?

テストがローカルでは通るのにオンラインでは通らないときにどうすればよいかを学びましょう


テストが、手元のマシンでは通るのにオンラインでは通らない、ということがときどきあります。

原因は、たいてい次のようないくつかです。

すべてのテストのスキップを外していない

Exercismの演習では、いくつかのテストがあらかじめスキップされた状態で用意されていることがよくあります。 ねらいは、テストを順番に1つずつ解き、次に進むたびにスキップを外していくことです。 演習の最後までたどり着くころには、すべてのテストのスキップが外れてテストが通るようになり、完全に動く解答ができあがっているはずです。 その言語でスキップがどう働くかの詳しい説明は、取り組んでいるトラックのドキュメントを確認してください。

オンラインでテストを実行するときは、まずすべてのスキップを外します。 そのため、ローカルでスキップをすべて外していないと、まだ気づいていないエッジケースが原因でテストが失敗することがあります。

オンラインとローカルで使っているバージョンが違う

Exercismのテストランナーは、特定のバージョンの言語を使っています。 新しいバージョンの言語がリリースされるたびにテストランナーを手動で更新する必要があるため、最新バージョンではないこともあります。

オンラインでテストが失敗したら、出力(「Failed」という語をクリックすると表示されます)を確認して、どこに問題がありそうかを突き止めてみてください。 バージョンの不一致が原因だとわかった場合は、GitHubの該当するテストランナーのリポジトリでissueを作成してください。 リポジトリ名は、通常https://github.com/exercism/$SLUG-test-runnerというパターンになっています(例:https://github.com/exercism/ruby-test-runner)。