0

我有一个场景,我的同事正在编写我希望在我的模块中使用的函数。他为他的模块编写单元测试,而我正在为我的模块编写单元测试。自然,我想为我的测试模拟他的功能。

生产代码是用 C 语言编写的,并与单元测试代码分开编译为库。在链接时,我们正在为 Mock 版本覆盖产品的目标代码。但是,这会覆盖对该特定函数的所有调用,而不仅仅是在我的单元测试中。

这是一个例子。

使用 CPPUTEST,我可以MockSupport_c.h随意使用。所以我为他的功能写了一个模拟。前任

实际功能:

int read_bytes(int count)
{
    // for loop read the bytes
    return success;
}

我用我想测试的函数调用上述内容

int read()
{
    return read_bytes(256);
}

测试模块如下所示:


// create the mock
int read_bytes(int count)
{
    mock_c()->actualCall("read_bytes");
    return 1;
}

// test the code
TEST(group, test_name)
{
    mock_c()->expectOneCall("read_bytes");
    read();
    mock_c()->checkExpectations();
}

编译单元测试时,链接器会将生产代码实现替换为模拟版本;但它会为对该函数的所有调用执行此操作。所以我的同事单元测试现在调用模拟,当它应该测试他的实际调用时。

如何让模拟仅在我的测试期间应用,而不覆盖我的同事电话?

或者我只是对所有这些工作方式不满意?

4

0 回答 0