0

最初の CPPUNIT_TEST で設定した変数は、その後の CPPUNIT_TEST でどのようにアクセスできますか?

EX用。

CPPUNIT_TEST_SUITE(TestingEx);
CPPUNIT_TEST(ex1);
CPPUNIT_TEST(ex2);
CPPUNIT_TEST_SUITE_END();

public:
int x=0;
void ex1()
{ 
do some testing and logic would set x to someother value ...
    x=4;
}
void ex2()
{
use x to do some testing // x should be 4, but I get 0??
}

誰かが私に何が間違っているのか、どうすればそれを機能させることができるのか説明してもらえますか?

4

1 に答える 1

1

Cppunit は、各テストが互いに分離されているという概念に従います。これは、すべてのユニット テスト フレームワークにとって有用な仮定です。さらに悪いことに、テストが特定の順序で実行されることは保証されません。

問題を解決するための解決策があります。

  • クラスで静的変数を使用します。これは見苦しく、テストを書くときはめったに使用せず、単体テストではほとんど使用しないでください。
  • 各テストを実行する前に、setUp を使用してテスト環境を初期化します。
  • テストメソッドで、コンストラクターなどの他の方法でデータを初期化します...各テストの前に
于 2012-06-28T22:16:13.190 に答える