我有一个测试用例,我想为不同的数据库状态执行.我将对象插入到夹具中的DB(我想保持这种方式).我想为数据库中的不同配置创建DB虚拟化和专用夹具的初始化方法.
我能想到的一种方法是做一些事情:
void doTest(){
//test code here
}
BOOST_FIXTURE_TEST_CASE(test1, fixture1)
{
doTest();
}
BOOST_FIXTURE_TEST_CASE(test2, fixture2)
{
doTest();
}
BOOST_FIXTURE_TEST_CASE(test3, fixture3)
{
doTest();
}
Run Code Online (Sandbox Code Playgroud)
但是有更清洁,更整洁的方式吗?或许我不应该完全这样做?我将非常感谢测试专家给出的任何建议.
我正在编写一个执行命令行应用程序的脚本,该应用程序需要在运行时输入用户(很遗憾,不提供命令行参数).
所以我的第一次尝试看起来像这样:
@echo off
(echo N
echo %~dp0%SomeOther\Directory\
echo Y)|call "%~dp0%SomeDirectory\SadSoftware.exe"
Run Code Online (Sandbox Code Playgroud)
乍一看,它看起来效果很好,但事实证明它没有.经过调查,我发现我传递给软件的目录最后包含了额外的空间,这导致了一些问题.
我环顾了一会儿,发现了以下问题: 当与管道一起使用时,回声增加了空间.
这解释了发生了什么,但并没有真正帮助我解决我的问题(我对批处理编程不太熟悉).
目前,我用一种丑陋的解决方法"解决了"我的问题:
echo N> omg.txt
echo %~dp0%SomeOther\Directory\>> omg.txt
echo Y>> omg.txt
"%~dp0%SomeDirectory\SadSoftware.exe"<omg.txt
del omg.txt
Run Code Online (Sandbox Code Playgroud)
这个解决方案有效,但我对它不满意.有更漂亮的方式吗?甚至更丑陋的方式,但没有临时文件?
我有一个包含 a 的方法static unsigned int
,因此它可以返回连续的目录名称。就像是:
string MyClass::createDirectory() const
{
static unsigned int i = 0;
stringstream ss;
string directory;
do
{
++i;
ss.str("");
ss << "/" << setfill('0') << setw(6) << i;
directory = m_rootDirectory + ss.str();
} while(!m_filesystem->createDirectory((directory)));
return directory;
}
Run Code Online (Sandbox Code Playgroud)
我知道这是非常幼稚的解决方案,但现在已经足够了。
但是我在编写单元测试时遇到了问题——静态变量在测试用例之间递增。
有没有办法重置这样的变量?还是将静态方法变量更改为非静态类成员是我唯一的选择?
我正在使用 Google 测试框架。
我有点困惑,因为我确信这应该有所不同.看看这个代码示例:
#include <iostream>
#include <string>
using namespace std;
class base
{
public:
virtual ~base() = default;
};
class derived : public base
{
private:
int a = 0;
int *b = nullptr;
std::string lol;
public:
derived(std::string s) : b(new int(6)), lol{s} { cout << "ctor " << lol << endl; }
derived(derived const& d) : lol{d.lol + " copy"} {cout << "copy " << lol << endl; }
virtual ~derived() { cout << "dtor " << lol << endl; delete …
Run Code Online (Sandbox Code Playgroud) c++ ×3
batch-file ×1
boost ×1
boost-test ×1
deep-copy ×1
echo ×1
fixtures ×1
googletest ×1
mt ×1
pipe ×1
static ×1
unit-testing ×1
windows ×1