向量的单位测试

Unit test for a vector

本文关键字:测试 单位 向量      更新时间:2023-10-16

请,我在这里搜索它,但无法正确执行。

因此,我有一个函数,它返回了我的sortig编号的vector。然后,我尝试为此向量创建一个使用测试。

这是我现在拥有的:

#include "stdafx.h"
#include "CppUnitTest.h"
#include "Finder.h"
using namespace Microsoft::VisualStudio::CppUnitTestFramework;
namespace FinderUnitTest
{       
    TEST_CLASS(UnitTest1)
    {
    public:

        TEST_METHOD(TestMethod1)
        {
            Finder f;
            std::vector<int> v1 = f.find_words();
             //find_words(); is working okay without tests
            for (int i=0;i<1;i++)
                Assert::AreEqual(57,v1[i]);
        }
    };
}

真的没关系,for进行了多少次。我想毫无疑问地进行单位测试,我现在有一个:

向量线1795。表达式:"向量下标"

当我构建两个项目时,我如何获得该数据,即返回排序数字向量的fuction没有任何数据,因为当我运行测试时,有空。我是吗?

我只想将矢量的两个第一个数字与57进行比较。

如果您期望find_words返回[57,57,...]这样的向量,则此测试应失败。但是,它不应该错误,而应该断言。您想修复您的支票,因此他们将问题视为违反违规的问题。

Finder f;
std::vector<int> v1 = f.find_words();
Assert::IsTrue(v1.size() >= 2); // there are at least two entries
Assert::AreEqual(57,v1[0]); // the first is 57
Assert::AreEqual(57,v1[1]); // the second is 57

我看不到您在哪里可以搜索的东西,但是如果您说应该找到57的东西,那就是老板。只需确保检查一下即可。一旦Unitest提供了这一断言,Unitest已经完成了工作,您可以返回,看看是否给Finder提供了正确的输入,或者是否有Finder内部的错误。

X21的评论是关于如何检测和避免崩溃的好编程实践。它通过完全不检查值来修复崩溃,因为这样做是错误的。它不是旨在编写单元测试的。单位测试必须检测并断言何时不是您期望的输出。在测试中,崩溃总比根本不检查要好。