初心者のためのC#プログラミング本格入門60 - テストと共に歩もう
前回は類似したプログラムを元に「式を分割するプログラム」をある程度作りました。ですが、このプログラムはまだ完成していません。新しいプログラムを完成させるには、テストしながら作り込むのが一番です。実は既にそのための準備が整っています。56回で用意したテストプロジェクトを有効活用します。
先ずはテストプログラムを「スタートアップ プロジェクト」に設定しましょう。やり方は簡単です。ソリューションエクスプローラでFirstProgramTestプロジェクトを右クリックしてポップアップメニュを表示します。表示したら「スタートアップ プロジェクトに設定」という項目があるのでそこで左クリックします。そうすれば、直ぐにテストプロジェクトを起動できるようになります。
次に「MultiAnalyzerTest」という名前のクラスを追加します。MultiAnalyzerTestクラス用のファイルを用意できたら以下のプログラムをそこに書いて下さい。
class MultiAnalyzerTest
{
private MultiAnalyzer target;
public MultiAnalyzerTest()
{
this.target = new MultiAnalyzer();
}
}
今度はテスト用プロジェクトにあるProgram.csファイルの内容を以下のプログラムに変えて下さい。もしProgram.csファイルがなければ追加しておきましょう。
class TestProgram
{
static void Main()
{
MultiAnalyzerTest multiTests = new MultiAnalyzerTest();
}
}
これで準備万端です。MultiAnalyzerオブジェクトのテストを行うプログラムをどんどん書いていきます。簡単なテストから作っていきます。初めにつくるテストプログラムは、「 1 + 2 の式が正しく解析できているのかチェック」する内容のテスト用プログラムです。
class MultiAnalyzerTest
{
//他は省略
//簡単な式が指定された場合の解析処理をテストする
public void AnalyzeSimpleExpression()
{
string value = "1 + 2";
this.target.AnalyzeExpression( value );
if ( target.Success == false )
{
System.Console.WriteLine(
"簡単な式が解析できていません。" );
}
}
}
テストプログラムはメソッドとして用意しておきます。テストはこのメソッドを呼び出す形で実施します。
class TestProgram
{
static void Main()
{
MultiAnalyzerTest multiTests = new MultiAnalyzerTest();
multiTests.AnalyzeSimpleExpression();
}
}
「デバッグなしで開始」でこのテストプロジェクトを実行してみましょう。何も表示されなかった筈です。何故かと言いますと、DivisionAnalyzerメソッドが呼び出されていないからです。MultiAnalyzerオブジェクトのAnalyzeExpressionメソッド内にDivisionAnalyzerメソッドを呼び出すプログラムを追加し、再度テストプロジェクトを実行してみましょう。今度はエラーメッセージが表示されます。簡単な式すら解析できていない事に驚いた人が多いでしょう。ですが初めはこれでいいのです。「エラー」というとショックを受ける初心者が多いと思いますが、エラーを出しながらプログラミングをした方が逆に上手くいきます。次回その理由について解説します。