Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/161.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;在代码中保留断言的测试套件_C++_Unit Testing_Testing_Visual C++_Automated Tests - Fatal编程技术网

C++ C++;在代码中保留断言的测试套件

C++ C++;在代码中保留断言的测试套件,c++,unit-testing,testing,visual-c++,automated-tests,C++,Unit Testing,Testing,Visual C++,Automated Tests,我正在尝试为我的项目设置测试,我禁用了异常,并定义了调用std::abort的断言。gtest和Catch只能在调用std::abort的一个测试中失败,因为它会杀死整个测试套件。 我的项目编译成测试项目/可执行文件引用的DLL。除了: 启用异常并让我的断言抛出 创建自定义编译目标并执行类似于1的操作 重新构造代码,使其不依赖断言而失败 我还有其他选择吗?出于设计/速度方面的考虑,我不希望启用异常。这里有两个问题: 1. Can I do testing without exceptions?

我正在尝试为我的项目设置测试,我禁用了异常,并定义了调用std::abort的断言。gtest和Catch只能在调用std::abort的一个测试中失败,因为它会杀死整个测试套件。
我的项目编译成测试项目/可执行文件引用的DLL。除了:

  • 启用异常并让我的断言抛出
  • 创建自定义编译目标并执行类似于1的操作
  • 重新构造代码,使其不依赖断言而失败

  • 我还有其他选择吗?出于设计/速度方面的考虑,我不希望启用异常。

    这里有两个问题:

    1. Can I do testing without exceptions?
    
    是的,你可以。如果
    std::abort
    没有提供足够的信息,您可以尝试使用
    std::quick_exit

    2. Can I keep the test suite going after a failure?
    
    这真的与前者无关。保持测试套件在出现错误后继续运行是一项技术挑战,因为程序可能会因为可怕的不可恢复的原因(如除以零或堆栈可能已被破坏)而导致测试失败

    保持测试套件运行的唯一方法是在单独的进程中运行测试


    在我的一个项目中,我在
    main
    中删除了开关标志,该标志使程序在测试模式下运行,然后指向特定的测试。然后,bash脚本会在~100个这样的测试中进行迭代。

    这里有两个问题:

    1. Can I do testing without exceptions?
    
    是的,你可以。如果
    std::abort
    没有提供足够的信息,您可以尝试使用
    std::quick_exit

    2. Can I keep the test suite going after a failure?
    
    这真的与前者无关。保持测试套件在出现错误后继续运行是一项技术挑战,因为程序可能会因为可怕的不可恢复的原因(如除以零或堆栈可能已被破坏)而导致测试失败

    保持测试套件运行的唯一方法是在单独的进程中运行测试


    在我的一个项目中,我在
    main
    中删除了开关标志,该标志使程序在测试模式下运行,然后指向特定的测试。然后,bash脚本会在大约100个这样的测试上进行迭代。

    googletest支持这一点。查找死亡测试。应用程序中止的死亡测试。我构建代码的方式是,一旦出现不可恢复的错误,它就会中止,这几乎可以在任何时候发生。这可能不是一个很好的设计。googletest支持这一点。查找死亡测试。应用程序中止的死亡测试。我构建代码的方式是,一旦出现不可恢复的错误,它就会中止,这几乎可以在任何时候发生。这可能不是一个很好的设计。