小编Net*_*rix的帖子

如何进行CMake重新配置取决于自定义文件?

我在CMake下有一个项目,其中一些文件是从XML文件生成的python生成器.我无法在CMakeLists.txt中指定此生成器生成的所有文件,因此我使用文件globbing.

问题是当我更新我的XML文件或生成器源(它们在同一个存储库中)时,我希望重新配置我的构建系统,以便在重建代码时考虑更改的文件(例如通过make).

是否有可能使CMake处理一些文件,比如它处理CMakeLists.txt文件并使它在更改这些文件时重新生成构建系统?

code-generation cmake

8
推荐指数
2
解决办法
2545
查看次数

如何在模拟中使用Given / When / Then模式(Google Mock)?

我正在使用Give / When / Then模式使测试代码更加清晰。由于我使用C ++编写这些测试,因此我选择使用Google Test。使用测试,模式很清晰,因为我确实是这样的:

TEST(TestFixture, TestName)
{
    // Given
    int a = 5;
    int b = 6;
    int expectedResult = 30;

    // When
    int result = Multiply(a, b);

    // Then
    EXPECT_EQ(expectedResult, result);
}
Run Code Online (Sandbox Code Playgroud)

但是对于模拟,由于在给定部分中出现了一些期望,所以它变得不再清晰。给定部分假定是设置步骤。请看一个例​​子:

TEST(TestFixture, TestName)
{
    // Given
    int a = 5;
    int b = 6;
    int expectedResult = 30;

    MightCalculatorMock mock;

    EXPECT_CALL(mock, multiply(a,b))
        .WillOnce(Return(expectedResult));

    // When
    int result = Multiply(mock, a, b);

    // Then
    EXPECT_EQ(expectedResult, result);
}
Run Code Online (Sandbox Code Playgroud)

这种方法正确吗?应在何时将“给定/何时/然后”注释放置在测试代码中?

c++ unit-testing googletest googlemock

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