# SoupProject::MiX

## どくろみっくす

επιστημηさんがC Magazine 2002.04で紹介したツール「髑髏源」 をMiXを使ってRe-writeしてくださいました。

## 髑髏源とは何か？

髑髏源はテスト情報を記述したXMLからテストコードのヘッダーおよびテストコードの 呼び出し部分を自動生成するXP(eXtreme Programming)用ツールです。
Doxygen、適試源と組み合わせることで非常に使い勝手の良いテスト生成ができます。

## 髑髏源用XML

髑髏源の入力に使用するXMLファイルのDTDは以下の通り。

`

    <!-- Docrogen.dtd -->
    <!ELEMENT TestRunner (TestSuite) *>
    <!ATTLIST TestRunner name NMTOKEN #REQUIRED>
    <!ATTLIST TestRunner generate (true|false) 'true'>
    <!ELEMENT TestSuite (include*, (method|variable) *,TestCase *)>
    <!ATTLIST TestSuite name NMTOKEN #REQUIRED>
    <!ATTLIST TestSuite generate (true|false) 'true'>
    <!ATTLIST TestSuite setUp (true|false) 'true'>
    <!ATTLIST TestSuite tearDown (true|false) 'true'>
    <!ELEMENT include EMPTY>
    <!ATTLIST include name CDATA #REQUIRED>
    <!ATTLIST include system (true|false) 'false'>
    <!ELEMENT variable EMPTY>
    <!ATTLIST variable name NMTOKEN #REQUIRED>
    <!ATTLIST variable type CDATA #REQUIRED>
    <!ELEMENT method EMPTY>
    <!ATTLIST method name CDATA #REQUIRED>
    <!ATTLIST method type CDATA #REQUIRED>
    <!ATTLIST method args CDATA #IMPLIED>
    <!ELEMENT TestCase EMPTY>
    <!ATTLIST TestCase name NMTOKEN #REQUIRED>

`

これに準拠したXMLを書きます。

`

    <?xml version='1.0'?>
    <TestRunner name="run">
      <TestSuite name="ATest">
        <TestCase name="test1"/>
        <TestCase name="test2"/>
      </TestSuite>
    </TestRunner>

`

## 実行

上のデータをhoge.xmlという名前で保存した場合、

`

    $ docrogen hoge.xml

`

を実行すると、ATest.cpp,ATest.h,ATest_suite.impl,run.cppが生成されます。
あとはATest.cppを編集してテストコードを完成させ、 run.cppと、ATest.cppをコンパイルし、CppUnitとリンクさせることで ユニットテストランナーが完成します。
CppUnitがJUnitに比べて劣っている部分を見事に埋めてくれるツールだと感じました。