ABAPトラックでのテスト

ExercismでABAPの演習をテストする方法を学びましょう


Exercism上で

各演習は、1つのABAPクラス(1つ以上のメソッドを含みます)として提供されます。通常、入力パラメーターと出力パラメーターを持つメソッド定義が与えられます。課題は、演習の仕様に従ってメソッドの実装を完成させることです。

テストしたいコードができたら、「Run Tests」を選択します。すると、対応するABAPテストクラスが実行され、数秒後に結果が表示されます。エラーがある場合は、コードに戻って修正してください。すべてのテストに合格したら、おめでとうございます! 演習は完了です。解答を提出できます。

トラブルシューティング

内部では、ABAPコードはabaplint transpilerと呼ばれるものでコンパイル・実行されています。これはまだ比較的新しい仕組みです。解決できない問題が発生した場合は、GitHubでissueを作成してください。

デバッグとログ出力

ExercismのウェブサイトでABAPの演習を実行しているときは、使えるデバッガーがありません。そのため、テストがなぜ失敗しているのかを突き止めるのが難しくなることがあります。しかし、コードにデータを記録する巧妙な方法があります(注意:これはABAPシステムでは動作しません)。

こちらが例です。最初の画像は、いくつかのテストが失敗している演習のコードを示しています。失敗した各テストには、期待される値と実際の値が表示されています:

ログ出力なしの演習

デバッグを楽にするには、console=>log()の呼び出しを1つ以上追加し、途中のデータをメソッドに渡します。改行(\n)を使うと、出力を整理しやすくなります。テストを実行すると、テスト結果にコンソール出力が表示されます:

ログ出力ありの演習

注意:コンソール出力は、失敗したテストでしか確認できません。解答を公開する場合は、ログ出力の文を削除しておくと、公開した解答を他のコミュニティメンバーが読みやすくなります。

自分の環境で

トラック全体

自分の環境で練習を始める最も簡単な方法は、abapGitを使ってこのリポジトリーをクローンすることです。これで、現在利用できるすべての演習のスタブとテストクラスが作成されます。

個別の演習

ABAP Development Tools(または古いシステムの場合はトランザクションSE24またはSE80)を起動し、演習のクラスと同じ名前の新しいABAPクラスを作成します。Exercismのウェブサイトからコードをコピー&ペーストして、クラスのスタブとテストクラスを実装します。

解答を実装する

これで、演習のクラスを編集して解答を実装できます。その後、ABAPユニットテストを実行して、すべてのテストに合格するか確認します。実装が完了してテストに成功したら、コードをカット&ペーストしてExercismのウェブサイトの演習用エディターに貼り付けます。そこでテストも実行しましょう。

演習のテストと完了

自分の環境でコーディングとテストを行う場合は、標準のSAP ABAPコンパイラーと実行環境が使われます。テストが失敗したら、原因は自分のコードにある可能性が高いです。もう一度見直してみましょう。

コードがユニットテストに合格したら、クラスの実装をカット&ペーストしてExercismのウェブサイトの演習に貼り付け、「Run Tests」を選択します。もちろん、そこでもテストに合格するはずです。合格しない場合は、上のトラブルシューティングのセクションを参照してください。