c++ - 使用 Catch 在 BDD 样式测试中对多个数据进行一次测试

标签 c++ testing bdd

我正在使用 C++ 和 Catch 框架进行测试。当应该在多个数据上满足一组条件而不重复代码时,使用 Catch 以 BDD 风格编写测试用例的正确方法是什么?

例如,假设这个测试场景:

SCENARIO( "Test the graph deserialization" ) {
    GIVEN( "A graph" ) {
        Graph g;
        WHEN( "It is loaded by file name" ) {
            g.load( "small_graph.gf" );
            THEN( "It has correct number of nodes and edges" ) {
                REQUIRE( g.node_count() == 210 );
                REQUIRE( g.edge_count() == 306 );
            }
        }
        WHEN( "It is loaded by input stream" ) {
            std::ifstream ifs( "small_graph.gf" );
            g.load( ifs );
            THEN( "It has correct number of nodes and edges" ) {
                REQUIRE( g.node_count() == 210 );
                REQUIRE( g.edge_count() == 306 );
            }
        }
    }
}

可以看出,THEN block 是多余的。在不再次编写相同代码的情况下执行相同操作的正确方法是什么。

最佳答案

我会提取一个方法并在需要时调用它,而不是复制功能。

关于c++ - 使用 Catch 在 BDD 样式测试中对多个数据进行一次测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46345397/

相关文章:

BDD 场景多重依赖

c++ - 如何使用 Qt5 编译 Qt FTP webkit 示例?

c++ - 如何按文件大小降序对文件进行排序

java - 如何使用 mockito 进行集成测试

testing - 一次创建数百个文档?

bdd - 在多个页面上重用场景

testing - calabash-android:是否可以忽略固定(预定义)步骤?

c++ - glutMouseFunc 上没有滚轮回调

c++ - 范围到值组的高效映射

c# - 如何在 C# WebDriver 中获取浏览器信息?