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つのリンクが詳しい。

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