小编Din*_*ino的帖子

每次使用不同的夹具多次执行一个测试用例

我有一个测试用例,我想为不同的数据库状态执行.我将对象插入到夹具中的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)

但是有更清洁,更整洁的方式吗?或许我不应该完全这样做?我将非常感谢测试专家给出的任何建议.

c++ boost fixtures mt boost-test

13
推荐指数
1
解决办法
1865
查看次数

Windows cmd echo/pipe最后会增加额外的空间 - 如何修剪它?

我正在编写一个执行命令行应用程序的脚本,该应用程序需要在运行时输入用户(很遗憾,不提供命令行参数).

所以我的第一次尝试看起来像这样:

@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)

这个解决方案有效,但我对它不满意.有更漂亮的方式吗?甚至更丑陋的方式,但没有临时文件?

windows pipe batch-file echo

6
推荐指数
1
解决办法
5656
查看次数

谷歌测试和静态局部变量

我有一个包含 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 测试框架。

c++ static unit-testing static-members googletest

2
推荐指数
1
解决办法
8403
查看次数

在分配新内容之前未删除对象

我有点困惑,因为我确信这应该有所不同.看看这个代码示例:

#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++ deep-copy copy-constructor assignment-operator

1
推荐指数
1
解决办法
55
查看次数