草庐IT

test-reporting

全部标签

c++ - gtest DEATH_TEST 提示 fork() 和线程,但只有找到的线程已加入

我正在使用gtest进行单元测试,特别是在调试版本中对某些断言使用了一些DEATH_TESTS。为了SetUp()测试,我必须创建一个对象,它会创建另一个线程,关闭并执行一些工作,返回一些数据,然后加入对象的线程。最后,测试夹具的SetUp()返回,允许测试主体运行。我注意到有时DEATH_TEST会提示死亡测试使用fork(),这在线程上下文中尤其不安全。对于此测试,GoogleTest检测到2个线程。这当然是一个有效问题,如果实际上有多个线程在运行。但是,有时不存在此类警告。这似乎是一种竞争条件。所以仔细研究,我发现gtest使用/proc/self/task伪文件系统来发现线程。

c++ - LeakSanitizer : get run time leak reports?

我继承了一些遗留代码,似乎某处有内存泄漏。我的第一直觉是用编译-faddress=sanitize-fno-omit-frame-pointer让AddressSanitizer的工具系列帮我找到漏洞。然而,我非常失望。我希望出现某种运行时错误消息(类似于地址清理程序在您不应该读取或写入内存时的错误)。在程序成功完成之前,泄漏sanitizer似乎不会进行任何泄漏检查分析。我的问题是我继承的代码有多个线程,它并不是为了将所有线程都加入到软着陆准备中而设计的。我用一个简单的例子简化了我的问题:#include#include#includeboolexit_thread=false;vo

linux - test -n 和 test -z 都为真的情况

#!/bin/bashecho"Pleaseinput2nums:"readabif[-z$b];thenechobiszero!fiif[-n$b];thenechobisnon-zero!fi运行脚本时,只输入1个数字,其他为空,则b应该为null。但结果是打印了echo。-laptop:~$./test.shPleaesinput2nums:5biszero!bisnon-zero!b既是null又是非null?!有人可以对此发表评论吗?谢谢!~ 最佳答案 替换if[-z$b];then与if[-z"$b"];then在另一个

linux - Bash: '$(( ))' 表示 'expr' 和 '[ ]' 表示 'test'?

我最近一直在使用一些bash脚本,并且一直在浏览手册页。根据我收集到的信息,$(())是否表示expr而[]是否表示test?对于$(()):echo$((5+3))具有相同的输出:echo$(expr5+3)对于[]:test'str'='str'具有相同的成功值:['str'='str']我的理解正确吗? 最佳答案 ((...))结构等同于bash内置的let。let做的事情与expr做的基本相同。$((...))构造,注意开头的$,会像$(...)确实如此。[...]构造实际上只是test的另一个名称。有关更多信息,请参阅ba

linux - 如何为 32 位嵌入式软件重新配置 Google Test?

我已经根据this.安装了GoogleTest我的问题如下:我必须测试为具有32位操作系统的嵌入式软件开发的项目,因此我需要从64位重新配置GoogleTest。对于旧的1.7.0版本,已知解决方案是这样的:autoreconf-fvi./configure--build=i686-pc-linux-gnu"CFLAGS=-m32""CXXFLAGS=-m32""LDFLAGS=-m32"make这就是我现在尝试使用新版本的方式:cdhome/CWD/googletest/googlemockautoreconf-fvi./configure--build=i686-pc-linux-

c++ - GDB 错误 : Selected architecture i386 is not compatible with reported target architecture i386:x86-64

有谁知道这个错误是什么意思?我在Linux机器上使用Netbeans8.0、gdb7.8.1。两天前一切都很好,然后当我开始调试时突然开始出现这个错误,我不知道这是什么意思。到目前为止,我正在尝试清理和重置我能想到的一切:重新安装netbeans、清理所有本地文件、再次rebase我的代码、取消设置所有断点等等。谁能帮我理解这个错误是什么意思?我从未设置过这些断点,Netbeans从哪里获取它们?提前致谢,雷切尔编辑所以现在我有更多的细节:当我尝试直接使用GDB调试我的应用程序时,没有netbeans我收到以下错误:Startingprogram:....warning:Selecte

linux - GNU 找到 : test for file size greater/smaller-equal a certain size

GNUfind有没有办法找到大小为>=的文件?或一定尺寸?我只找到了>,,==运营商,例如-size+1M,-size-1M,-size1M,分别。在this博客,作者建议多个组合-size参数如find.-typef-size+1M-size-2M.但是,这不适用于我的find(GNUfindutils)4.4.2。 最佳答案 由于运营商在逻辑上等同于not>(不大于),这2个运算符可以互换。在我们的示例中,要查找大小小于或等于1M的文件,您可以查找不大于1M的文件:-not-size+1M.同样的逻辑可以应用于>=使用not.

PHP error_reporting 计算器

我正在寻找一种工具来帮助我在PHP中分析和设置error_reporting级别。我希望它具有以下功能:粘贴一个数字error_reporting()值并查看其中设置的所有单个错误报告位带有复选框的所有可能错误级别的列表。检查它们会生成用于设置它的PHP代码。(可选)选择生成的PHP代码必须在其下运行的PHP版本,并生成适用于所有版本的代码。设置时很重要,例如E_DEPRECATED从5.3开始存在,但在5.2中不存在(可选)我可以在浏览器中运行的Web应用程序有这样的工具吗?在哪里? 最佳答案 此工具具有您想要的一些功能:http

PHP error_reporting 与 display_errors

error_reporting(0)是否与ini_set('display_errors',0)相同?如果不是,有什么区别?我也对这段代码的安全方面感兴趣吗?我可以实现'somalicioususerscan'tprobe吗?'用这个? 最佳答案 它们并不相同,但在您的使用中可能会产生相同的结果。error_reporting是报告级别,从NONE到ALL。这决定了报告的错误类型(E_NOTICE、E_WARNING、E_ALL等)。display_errors是否显示从1报告的那些错误(输出到浏览器、CLI等...)。如果您设置了

php - 我如何覆盖 php ://input when doing unit tests

我正在尝试使用Zend和PHPUnit为Controller编写单元测试在代码中我从php://input获取数据$req=newZend_Controller_Request_Http();$data=$req->getRawBody();当我测试实际应用程序时,我的代码工作正常,但除非我可以提供数据作为原始httppost,否则$data将始终为空。getRawBody()方法基本上调用file_get_contents('php://input'),但我如何覆盖它以便为我的应用程序提供测试数据。 最佳答案 我遇到了同样的问题,