似乎有一些答案是那种,有点理智,但我不知道如何执行.我还没有找到一个全面的答案.
Google Test不应该是已安装的库,它应该与项目一起构建.(请参阅常见问题解答.)据我所知,这意味着Google Test库是我单元测试的依赖项,应该在我第一次在项目中运行"make check"时构建.这应该在某个目录中构建Google Test库.我不知道该怎么做.它提到了一些被弃用的autotools脚本,我不确定他们在谈论什么,或者如何正确地指出我的构建.
假设构建成功,我如何编写使用我的本地编译版Google Test运行测试的测试?我假设我在test目录中放了一堆Makefile.am命令.但他们是什么?什么是使用Google Test的单元测试的例子?
这是代码:
unsigned int a; // a is indeterminate
unsigned long long b = 1; // b is initialized to 1
std::memcpy(&a, &b, sizeof(unsigned int));
unsigned int c = a; // Is this not undefined behavior? (Implementation-defined behavior?)
Run Code Online (Sandbox Code Playgroud)
a
该标准是否保证在我们进行初始化的地方是一个确定的值c
?Cppreference说:
void* memcpy( void* dest, const void* src, std::size_t count );
将
count
字节从指向的对象复制到src
指向的对象dest
。这两个对象都重新解释为的数组unsigned char
。
但是我看不到cppreference中的任何地方,如果说这样不确定的值被“复制到”,它将变成确定的。
从标准看来,这类似于:
unsigned int a; // a is indeterminate
unsigned long long b = 1; // b …
Run Code Online (Sandbox Code Playgroud) 在模块警告(https://docs.python.org/3.5/library/warnings.html)中,可以发出似乎来自堆栈中某个位置的警告:
warnings.warn('This is a test', stacklevel=2)
Run Code Online (Sandbox Code Playgroud)
是否存在引发错误的等价物?我知道我可以使用备用回溯引发错误,但我无法在模块中创建该回溯,因为它需要来自之前的版本.我想象的是:
tb = magic_create_traceback_right_here()
raise ValueError('This is a test').with_traceback(tb.tb_next)
Run Code Online (Sandbox Code Playgroud)
原因是我正在开发一个具有一个函数的模块,module.check_raise
我想引发一个看起来源于函数调用位置的错误.如果我在module.check_raise
函数内引发错误,它似乎来自内部module.check_raise
,这是不希望的.
此外,我尝试了一些技巧,比如提出一个虚拟异常,捕获它,然后传递回溯,但不知怎的,tb_next变成了None
.我没有想法.
编辑:
我想要这个最小例子的输出(称为tb2.py):
import check_raise
check_raise.raise_if_string_is_true('True')
Run Code Online (Sandbox Code Playgroud)
只有这个:
Traceback (most recent call last):
File "tb2.py", line 10, in <module>
check_raise.raise_if_string_is_true(string)
RuntimeError: An exception was raised.
Run Code Online (Sandbox Code Playgroud) 由于某种原因,这段代码创建的图形只是标准尺寸:它不会改变高度或宽度(我选择宽度和高度是荒谬的,以清楚地说明问题):
import matplotlib.pyplot as plt
fig = plt.figure()
fig.set_figwidth(30)
fig.set_figheight(1)
print('Width: {}'.format(fig.get_figwidth()))
plt.show()
Run Code Online (Sandbox Code Playgroud)
我正在运行OSX 10.10.4,Python 3.4.3,Matplotlib 1.4.3.(通过Macports安装.)任何想法?我错过了什么?
c++ ×2
python ×2
autotools ×1
c++17 ×1
googletest ×1
matplotlib ×1
memcpy ×1
python-3.5 ×1
python-3.x ×1
unit-testing ×1