Test Case
你如何寫幾個可以各別執行的測試到一個fixture裡面?
這過程有兩個步驟:
在fixture類別中,把
test cases
寫成一個個的函數(method)建立執行這些
test cases
函數的TestCaller
物件。
這是含有一些test case函數的類別:
//ComplexNumberTest.h
class ComplexNumberTest : public CppUnit::TestFixture
{
private:
Complex *m_10_1, *m_1_1, *m_11_2;
protected:
void setUp()
{
m_10_1 = new Complex( 10, 1 );
m_1_1 = new Complex( 1, 1 );
m_11_2 = new Complex( 11, 2 );
}
void tearDown()
{
delete m_10_1;
delete m_1_1;
delete m_11_2;
}
void testEquality()
{
CPPUNIT_ASSERT( *m_10_1 == *m_10_1 );
CPPUNIT_ASSERT( !(*m_10_1 == *m_11_2) );
}
void testAddition()
{
CPPUNIT_ASSERT( *m_10_1 + *m_1_1 == *m_11_2 );
}
};
像這樣可以建立和執行的每個test cases
實體:
CppUnit::TestCaller<ComplexNumberTest> test("testEquality", &ComplexNumberTest::testEquality);
CppUnit::TestResult result;
test.run(&result);
test caller建構子的第二個參數,是一個ComplexNumberTest
的一個函數位址。當test caller執行時,函數就會跟著執行。 不過,一般不會這樣做,因為沒有顯示任何診斷結果 一般來說會用TestRunner
(後面會介紹)它會顯示測試結果。
一旦測試變多時,就將他們組合成一個suite
。
譯註:
在Java稱method, 在C++稱function,在此為統一中文稱呼,使用「函數」。
address of a method 函數位址,個人認為義同function pointer
Last updated
Was this helpful?