在单元测试中严重依赖字符串是否可以接受?

时间:2015-10-03 12:13:40

标签: c++ string unit-testing signals-slots

我正在使用Catch framerwork为实现信号概念的类编写测试。我想测试插槽是否以正确的顺序调用,参数是否正确传递等等。我使用字符串(std::stringstream来确切)以验证它。

#include "catch.hpp"

#include <nete/Signal.h>

#include <sstream>

std::stringstream ss;

void global_function1(int a, int b) {
    ss << "global_function1 " << a << " " << b << " ";
}

void global_function2(int a, int b) {
    ss << "global_function2 " << a << " " << b << " ";
}

TEST_CASE("Signal connect", "[signal]")
{
    SECTION("global")
    {
        ss.clear(), ss.str("");

        nete::Signal<void(int, int)> s;

        s.connect<global_function1>();
        s.connect<global_function2>();

        s(123, 456);
        s(234, 567);

        std::string expected =
        "global_function1 123 456 "
        "global_function2 123 456 "
        "global_function1 234 567 "
        "global_function2 234 567 ";

        REQUIRE(ss.str() == expected);
    }
}

一方面,解决方案按预期工作,另一方面 - 感觉有点hacky。有什么警告我不知道吗?或者也许还有其他一些标准的方法来实现函数/方法实际调用正确的参数?

0 个答案:

没有答案