【发布时间】:2012-12-17 19:25:40
【问题描述】:
我希望为我的 boost 测试处理额外的命令行参数。我正在使用它来自动测试功能,我需要指定服务器名称、用户、密码等内容...
当我传递我的测试可执行额外命令参数时,除了已经编码到整个单元测试中的参数之外,我得到一个堆损坏错误。
我已经左右搜索过,只是找到可以访问这些参数的位置就够难了。现在看来我可能还需要先设置它们,否则命令行解析器会做一些愚蠢的事情。
有人知道如何添加命令行参数来提升单元测试吗?
编辑——最小示例
#define BOOST_TEST_MODULE xxx
#include <boost/test/unit_test.hpp>
BOOST_AUTO_TEST_CASE(empty) {}
拨打此电话:exename hello
这似乎与任何事情无关。这个问题应该删除。我无法谈论我认为发生的事情,但我认为这可能与此有关:
**看到这里的任何读者都知道这里的问题和答案没有用,这一点非常重要。我遇到的问题非常具体到我的环境,我无法谈论。我真的希望模组和人们停止删除此警告或让我删除此警告,但事实就是如此。不要被这只野鹅误导到黑暗的小巷里。 **
【问题讨论】:
-
您能否向我们提供有关您正在做什么或遇到什么错误的更多详细信息?我敢打赌,您正在传递字符串常量。命令行参数必须是变量(可修改),不能是常量。向我们展示您的代码。
-
你是什么意思命令行参数必须是可修改的变量??它们只是通过
argv进入程序的字符串。没有代码可看,因为我不知道如何告诉 boost 还有更多的命令行内容要处理。做一个空白测试,用“hello”作为命令参数调用它,就会发生堆错误。 -
我的意思是命令行参数必须是可修改的,而不是字符串常量。如果它们通过
argv来,它们将是可修改的。但是,如果您尝试自己填写它们并使用常量,则它们不会。你能粘贴给出堆错误的实际代码吗——一个最小的例子。 -
据我所知,C++ 命令行参数始终是字符串常量,无法修改。我真的不明白你在说什么。
-
不,命令行参数总是可以修改的,这就是为什么 main 的原型在
argv中没有const。如果你传入常量,就会导致你描述的问题。
标签: c++ boost boost-test