【问题标题】:I don't want to stop test when access violation in test with boost library我不想在使用 boost 库的测试中访问冲突时停止测试
【发布时间】:2010-11-17 03:09:01
【问题描述】:

在使用 boost 测试库的单元测试中发生访问冲突时。

然后,测试被中止并完成。

但是,我不想停止单元测试。只是我想获得例外或通知。

我该怎么做?

谢谢,请理解我的傻瓜英语(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++。

编辑!!! 我理解你的意见。但是,我不是目标程序程序员。所以,我无法修复它们。 我只想继续我的测试程序。我做了很多测试用例。所以。每当我的测试程序遇到任何错误时,传递该错误并继续。

【问题讨论】:

  • 你用的是什么编译器?你在什么操作系统上运行?

标签: c++ unit-testing boost boost-test


【解决方案1】:

当您发生访问冲突时,整个过程的完整性就会受到损害。没有理智的方法可以从这种情况中恢复过来。因此没有明智的方法继续测试。当进程自身损坏时,进程就会停止运行,无论单元测试框架是否愿意。

【讨论】:

  • 是否不可能将访问冲突捕获为'try','catch'?
  • @cardbt 根据您的操作系统等,可能有办法捕捉它。但是仅仅修复访问冲突的来源而不是试图绕过它不是更好吗?
【解决方案2】:

我相信用于尝试捕获访问违规的方法是由实现定义的。但是,无论您以何种方式削减它,这都是一个坏主意。如果您的程序崩溃和烧毁,您最好还是中止测试过程并在继续之前解决问题。

【讨论】:

    猜你喜欢
    • 2013-05-29
    • 1970-01-01
    • 2013-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-18
    • 2015-02-21
    • 1970-01-01
    相关资源
    最近更新 更多