1

ブーストテストライブラリを使用した単体テストでアクセス違反が発生した場合。

その後、テストは中止され、終了しました。

しかし、単体テストを止めたくありません。例外または通知を取得したいだけです。

どうすればいいですか?

ありがとうございます、私の愚かな英語を理解してください (8(|)

編集!

テストプログラムにアクセス違反エラーはありません。それはターゲットプログラムにあります(テストされます)。

例えば。

対象プログラム

int target_function()
{
  char *source;

  strcpy(source, "access violation");

  return 0;
}

テストプログラム

BOOST_AUTO_TEST_CASE(access_violation)
{
  target_function();
  BOOST_CHECK(false);
}

編集!!!

Windows システムでは Visual Studio 2005 を使用し、Linux システムでは g++ も使用しています。

編集!!!私はあなたの意見を理解しました。しかし、私はターゲット プログラム プログラマーではありません。だから、私はそれらを修正することはできません。テスト プログラムを続行したいだけです。私はたくさんのテストケースを作ります。そう。テスト プログラムでエラーが発生するたびに、そのエラーを渡して続行します。

4

2 に答える 2

2

アクセス違反があると、プロセス全体の整合性が損なわれます。この状態から回復するための正しい方法はありません。したがって、テストを継続するための正しい方法はありません。プロセスがそれ自体を破壊すると、単体テストフレームワークがそれを望んでいるかどうかにかかわらず、プロセスはダウンします。

于 2010-11-17T03:13:16.227 に答える
1

アクセス違反を検出するために使用されるメソッドは、実装によって定義されていると思います。ただし、これはどのように切り取っても悪い考えです。プログラムがクラッシュして燃えている場合は、とにかくテスト プロセスを中止し、続行する前に問題を修正することをお勧めします。

于 2010-11-17T04:09:47.263 に答える