eXtreme Programmingテスト技法―xUnitではじめる実践XPプログラミング (OOP foundations)
- 作者: 日本XPユーザグループ,長瀬嘉秀
- 出版社/メーカー: 翔泳社
- 発売日: 2001/11
- メディア: 単行本
- クリック: 20回
- この商品を含むブログ (14件) を見る
第4回はバッチファイルを makefile にしてみる。
List9-X〜9-X を写経(本を会社に置いてきたので章番号が不明^^;)
実際のコードをテストする際には
- テスト対象.h
- テスト対象.cpp
- テストコード.h
が必要になってくると思われる。
ってことは「テスト対象」が増えるたびにバッチファイルを書き換える必要がある。
それだとカッコイクナイので makefile に書き出してそいつを nmake に食わせることにする(Windows + VC なので nmake)。
ためしに本にある Quiz.h、Quiz.cpp、QuizTest.h を作成してテストしてみる。
テストコード
Quiz.h
#ifndef QUIZ_H_INCLUDE #define QUIZ_H_INCLUDE #include <string> class Quiz { private: std::string question_; int answer_; public: Quiz( const std::string& aQuestion, const std::string& correctAnswer, const std::string& badAnswer ); const std::string& getQuestion() const; bool chackAnswer( int anAnswer ) const; }; #endif // #ifndef QUIZ_H_INCLUDE // EOF
Quiz.cpp
#include "Quiz.h" #include <cstdlib> #include <ctime> Quiz::Quiz( const std::string& aQuestion, const std::string& correctAnswer, const std::string& badAnswer ) { srand( ::time( 0 ) ); question_ = aQuestion + "\n"; // 問題シャッフル if ( (rand() % 2) ) { question_ += "1: " + correctAnswer + "\n2: " + badAnswer; answer_ = 1; } else { question_ += "1: " + badAnswer + "\n2: " + correctAnswer; answer_ = 2; } } const std::string& Quiz::getQuestion() const { return question_; } bool Quiz::chackAnswer( int anAnswer ) const { return answer_ == anAnswer; } // EOF
QuizTest.h
#include "Quiz.h" class QuizTest : public TestCase { public: // いつもきまった書き方のコンストラクタ QuizTest( const char* name ) : TestCase( name ) {} // 実行したいテストメソッド void testQuestion() { Quiz quiz( "ドラえもんは何型ロボット?", "ねこ", "たぬき" ); assert( std::string::npos != quiz.getQuestion().find( "ドラえもんは何型ロボット?" ) ); assert( std::string::npos != quiz.getQuestion().find( "ねこ" ) ); assert( std::string::npos != quiz.getQuestion().find( "たぬき" ) ); } void testAnswer() { Quiz quiz( "ドラえもんは何型ロボット?", "ねこ", "たぬき" ); if ( std::string::npos != quiz.getQuestion().find( "1: ねこ" ) ) { assert( quiz.chackAnswer( 1 ) ); } else { assert( quiz.chackAnswer( 2 ) ); } } }; // EOF
makefile
OBJS = Quiz.obj LIBS = cppunit.lib INC = D:\_work\etc\cppunit-x-20020331 test : $(OBJS) ruby TestRunnerFactory.rb cl -GX -I$(INC) Tester.cpp $(LIBS) $(OBJS) Tester.exe