gpt4 book ai didi

c++ - 如何每次使用不同的参数多次测试方法

转载 作者:太空狗 更新时间:2023-10-29 23:10:36 25 4
gpt4 key购买 nike

我正在学习如何使用 boost 测试。

我想测试方法JulianToGreenWich(float jd):

#include <ctime>

class Convert
{
private:

public:
Convert();
~Convert();

tm JulianToGreenWich(float jd);
};

为了用 Boost Test 测试它,我写下了这段代码:

struct TestFixture
{
Convert convert_instance;

TestFixture()
: convert_instance()
{}

~TestFixture() = default;
};

BOOST_FIXTURE_TEST_SUITE(TestConvert, TestFixture)

BOOST_AUTO_TEST_CASE(julianToGreenWichCase)
{
BOOST_TEST(1 == 1);
BOOST_TEST(true);
}

我的问题是我想用很多(不止一个)值来测试它。为此,我一直在阅读 BOOST_DATA_TEST_CASE_F ,但它似乎需要一个数据集(我不知道如何创建和使用它)。因此,我已经开始在 boost 文档中阅读此内容:Datasets .但是它的 Example of custom dataset 的例子非常复杂。

如果我想检查是否将值( float )传递给 JulianToGreenWich 方法,我将获得一个特定的 tm 结构。

如何使用多个对值(float jd、tm)测试我的方法?

最佳答案

Boost.Test 的官方文档位于www.boost.org:here .

类似下面的事情:

  • 创建 2 个数据集
    • 第一个数据集 - 例如 - 将包含转换器的输入值
    • 第二个数据集将包含预期值
  • 这两个数据集然后通过对数据集的 zip 操作合并为一个唯一的数据集,如 here 所述。
  • 之后的每个元素的元数为 2,它们在给定 BOOST_DATA_TEST_CASE 的两个变量中依次展开,分别是 input_valueexpected_value
BOOST_DATA_TEST_CASE( test_convert, 
data::make({0.1f,0.2f,0.3f})^data::make({tm1,tm2,tm3}), // creates a zip of 2 datasets
input_value, // first variable of the zip
expected_value) // second variable of the zip
{
Convert convertInstance;
// this might fail to compile because tm type should not printable.
// Adding BOOST_TEST_DONT_PRINT_LOG_VALUE on the tm type before the test
// should solve the issue.
BOOST_TEST(convertInstance(input_value) == expected_value);
}

您可以将 BOOST_DATA_TEST_CASE 替换为 BOOST_DATA_TEST_CASE_F 并将您的夹具与继承的 convert_instance 一起使用。

可以找到有关日志记录特定类型的更多信息 here .

关于c++ - 如何每次使用不同的参数多次测试方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56539418/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com