内容简介:http://stackoverflow.com/questions/605915/unit-test-compile-time-error
有没有办法测试编译时错误,但没有实际生成错误?例如,如果我创建一个不可复制的类,我想测试一下这个事实:尝试复制它会生成编译器错误,但是我仍然希望执行其他运行时测试.
struct Foo { int value_; Foo(int value) : value_(value) {} private: Foo(const Foo&); const Foo& operator=(const Foo&); }; int main() { Foo f(12); assert(f.value_ == 12); assert(IS_COMPILER_ERROR(Foo copy(f);)); } // Would like this to compile and run fine.
我想这不能像这样做,但是有一个惯用的方法来做到这一点,还是应该滚动自己的解决方案(也许使用脚本编译单独的测试文件和测试结果?)?
N.B .:我只是非拷贝来说明我的观点,所以我对使用boost :: noncopyable等的回答不感兴趣.
你可以使用make做.每个测试都将是一个代码段.以下是VC的2个测试工作示例. (我使用2个批处理文件进行通过测试和失败测试).我在这里使用GNU make.
Makefile文件:
FAILTEST = .\failtest.bat PASSTEST = .\passtest.bat tests: must_fail_but_passes \ must_pass_but_fails must_fail_but_passes: @$(FAILTEST) $@.cpp must_pass_but_fails: @$(PASSTEST) $@.cpp
must_pass_but_fails.cpp
struct Foo { int value_; Foo(void) : value_(0) {} private: Foo(const Foo&); const Foo& operator=(const Foo&); }; int main() { Foo f(12); return 0; }
must_fail_but_passes.cpp
struct Foo { int value_; Foo(int value) : value_(value) {} private: Foo(const Foo&); const Foo& operator=(const Foo&); }; int main() { Foo f(12); return 0; }
passtest.bat
@echo off cl /nologo %1 >NUL if %errorlevel% == 0 goto pass @echo %1 FAILED :pass
failtest.bat
@echo off cl /nologo %1 >NUL if not %errorlevel% == 0 goto pass @echo %1 FAILED :pass
请注意,cl.exe(即Visual Studio编译器)需要在您的路径中才能“正常工作”
玩的开心!
附:我怀疑这样会让我着迷:-)
http://stackoverflow.com/questions/605915/unit-test-compile-time-error
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 学习 Node.js,第 9 单元:单元测试
- Vue 应用单元测试的策略与实践 02 - 单元测试基础
- Vue 应用单元测试的策略与实践 04 - Vuex 单元测试
- Vue 应用单元测试的策略与实践 03 - Vue 组件单元测试
- Angular单元测试系列-Component、Directive、Pipe 以及Service单元测试
- 单元测试 – 我应该对不应该在函数中传递的数据(无效输入)进行单元测试吗?
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
The Filter Bubble
Eli Pariser / Penguin Press / 2011-5-12 / GBP 16.45
In December 2009, Google began customizing its search results for each user. Instead of giving you the most broadly popular result, Google now tries to predict what you are most likely to click on. Ac......一起来看看 《The Filter Bubble》 这本书的介绍吧!