[Cuppa-users:93] Re: テストデータを外から食わす

Zurück zum Archiv-Index

FUKUDA Fumiki ffuku****@ntes*****
2002年 7月 10日 (水) 13:12:56 JST


επιστημηです。

--- "[Cuppa-users:92] Re: テストデータを外から食わす" / FUKUDA Fumiki / 2002/07/09 14:26:05 +0900 ---

>こんなの見つけた: http://jtestcase.sourceforge.net/

こいつは XML で書かれた入力値と期待値の集合を読み込んで
ちょっとしたテスト用データベース JTestCase に登録/参照しています。
   http://jtestcase.sourceforge.net/javadocs/index.html

で、これとコンパチな CppTestCase ちうのをこさえてます。
これを使うと、こんなテストが書けます:

/* CalculatorTest.cpp
 *    CUPPAディレクティブは抜いてある
 */

#include "Calculator.h"
#include "CppTestCase.h"
#include <cppunit/extensions/HelperMacros.h>
#include <cppunit/TestAssert.h>

class CalculatorTest : public CppUnit::TestFixture {
  CPPUNIT_TEST_SUITE(CalculatorTest);
  CPPUNIT_TEST(testCalculate);
  CPPUNIT_TEST_SUITE_END();
private:
  CppTestCase* tc_;

  static int atoi(const std::string& str) {
    int result;
    std::istringstream strm(str);
    strm >> result;
    return result;
  }

public:

  virtual void setUp() {
    // CppTestCase のセットアップ
    tc_ = new CppTestCase("testcase.xml", "CalculatorTest");
  }
  virtual void tearDown() { 
    delete tc_;
  }

  void testCalculate() {
    std::string testMethod = "testCalculate";
    CppTestCase::names_type testCases = tc_->getNameOfTestCases(testMethod);
    // 全テストケースに対し...
    for ( CppTestCase::names_type::size_type i = 0; i < testCases.size(); ++i ) {
      std::string testCase = testCases[i];
      // 入力パラメータを取得
      CppTestCase::params_type params = tc_->getTestCaseParams(testMethod, testCase);
      int x = atoi(params["var1"]);
      int y = atoi(params["var2"]);
      char op = params["opt"][0];
      // テスト対象をコール
      Calculator c;
      int result = c.calculate(x,y,op);
      // 期待値を取得
      CppTestCase::asserts_type asserts = tc_->getAssertValues(testMethod,testCase);
      int expected = atoi(asserts["result"]);
      // 一致したか?
      CPPUNIT_ASSERT_EQUAL(expected, result);
    }
  }
};

CPPUNIT_TEST_SUITE_REGISTRATION(CalculatorTest);

α版が完成しました。CppUnit-1.9.8とXerces-1.7.0 が必要です。
例によって欲しい人にあげる。メールにてご一報を。

# Xercesは重いので、将来的には'なんちゃってSOX版'や'MiX版'も考えてます。

-----:-----:-----:-----:-----:-----:-----:-----:-----:-----
FUKUDA (episteme) Fumiki -- magical, but never a magic...



Cuppa-users メーリングリストの案内
Zurück zum Archiv-Index