FitNesseをC/C++で利用するためのslimフレームワークではcslimがあります。これを試してみました。
前回の続きです。
CSlimを使うと、APIレベルのテストを直接実行できます。ほかのテストツールとの役割分担はこんな感じ?
Web I/F ... Selenium
-----------------------------
API ... CSlim
-----------------------------
Function ... xUnit(CppUTest)
Authors は Robert Martin, James Grenning, and Doug Bradburyです。James Gremmingさんといえば ‘Test-Driven Development for Embedded C’の著者ですね。
cslimは内部でCppUTestを使ってます。CppUTestもこの本が詳しいです。
Webのドキュメントは、githubのwikiにある、以下の2つのリンクが詳しい。
- Executable Use Cases - Story Testing - Embedded Systems Conference 2010 Boston
- schuchert - cpptraining.GettingStartedWithFitNesseInCpp
cslimを動かす
以下の記事を参考にして、自分も動かしてみました。
まずは、CSlimを実行するディレクトリを作成
$ mkdir cpp_fitnesse
$ cd cpp_fitnesse
cslimはCppUTestに依存しているので先に、CppUTestをダウンロードしてコンパイル。
git clone git@github.com:cpputest/cpputest.git
mv cpputest CppUTest
./configure
make
cslimをダウンロードしてコンパイル。
git clone git@github.com:dougbradbury/cslim.git
cd cslim
make
cslimとcpputestは同じディレクトリにある必要がある。
<path>/cslim
<path>/cpputest
ブラウザに、以下のURLにブラウザからアクセス。
https://localhost/CslimFirstExamples
編集画面がでるので、以下のように修正。(pathは自分の環境に合わせて)
!contents -R2 -g -p -f -h
!define TEST_SYSTEM {slim}
!define TEST_RUNNER {/home/tsu-nera/src/cpp_fitnesse/cslim/CSlim_cslim}
!define COMMAND_PATTERN {%m}
!define SLIM_VERSION {0.0}
次に、以下のURLにブラウザからアクセスして、同じようにテストのサブページを作成する。
https://localhost/CslimFirstExamples.DecisionTableExample
wiki形式でテストケースを書く。
|Modulus |
|value|divisor|remainder?|
|6 |2 |0 |
|13 |27 |13 |
|5 |2 |1 |
テストを実行すると、失敗する。
気を取り直して、テストケースを書く。コードはこのサイトを参照。
<path>/fixture/Modulus.cpp
<path>/fixture/Fixture.c
Pointは、テスト対象ファイルの下に、以下の様な記述をすること。これで、自分の関数をfixtureから呼び出すための登録ができる。
SLIM_CREATE_FIXTURE(Modulus)
SLIM_FUNCTION(setValue)
SLIM_FUNCTION(setDivisor)
SLIM_FUNCTION(remainder)
SLIM_END
また、Fixture.cにModulesフィクスチャを登録すること。
SLIM_FIXTURE(Modulus)
再度makeしてテストを実行すると、今度は成功した。
for cygwin memo
Cygwin環境では、うまく動作させることができなかった。makefileに細工が必要なようだが、以下の記事を参考に編集すると、コンパイルはできるものの、Slim serverにアクセスできない。
my environment
- FitNesse 20130530
- CentOS 6.4