簡體   English   中英

如何使用多組初始條件運行測試?

[英]How do I run a test with multiple sets of initial conditions?

我目前有一套測試,它們是測試裝置的一部分。 我也想用不同的測試夾具運行相同的測試集。

如何在不實際復制粘貼測試和“手動”更改測試夾具名稱的情況下執行此操作(如下所示)?

class Trivial_Test : public ::testing::Test
{
    void SetUp()
    {
        ASSERT_TRUE(SUCCESS == init_logger());
        initial_condition = 0;
    }

    void TearDown()
    {
        shutdown_logger();
    }

    protected:
    int initial_condition;
};

class Trivial_Test_01 : public ::testing::Test
{
    void SetUp()
    {
        ASSERT_TRUE(SUCCESS == init_logger());
        initial_condition = 1;
    }

    void TearDown()
    {
        shutdown_logger();
    }

    protected:
    int initial_condition;
};

TEST_F(Trivial_Test, valid_input_1)
{
    EXPECT_TRUE(random_num()+initial_condition < 255);
}

TEST_F(Trivial_Test_01, valid_input_1)
{
    EXPECT_TRUE(random_num()+initial_condition < 255);
}

是否有一種將valid_input_1Trivial_TestTrivial_Test_01相關聯的不那么冗長的方法?

PS - 上面顯示的測試用例是一個微不足道的測試,它名義上代表了我的實際情況,但遠不及我實際處理的測試用例或測試夾具的復雜性。

您是否考慮過值參數化測試

也許對於您的實際測試用例,它增加了太多的復雜性,但您的示例看起來像:

class Trivial_Test : public ::testing::TestWithParam<int>
{
    void SetUp()
    {
         ASSERT_TRUE(SUCCESS == init_logger());
    }
    void TearDown()
    {
        shutdown_logger();
    }
};

TEST_F(Trivial_Test, valid_input)
{
    int initial_condition = GetParam();
    EXPECT_TRUE(random_num()+initial_condition < 255);
}

INSTANTIATE_TEST_CASE_P(ValidInput,
                        Trivial_Test,
                        ::testing::Values(0, 1));

您可以使用夾具類中的方法來執行此操作。 以下是您將如何為您執行此操作的示例:

class Trivial_Test : public ::testing::Test
{
    void SetUp()
    {
         ASSERT_TRUE(SUCCESS == init_logger());
    }
    void TearDown()
    {
        shutdown_logger();
    }
    setup_initial_condition(int value)
    {
        initial_condition = value;
    }

    protected:
    int initial_condition;
};

TEST_F(Trivial_Test, valid_input_1)
{
    setup_initial_condition(0);
    EXPECT_TRUE(random_num()+initial_condition < 255);
}

TEST_F(Trivial_Test, valid_input_2)
{
    setup_initial_condition(1);
    EXPECT_TRUE(random_num()+initial_condition < 255);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM