【问题标题】:How to compare arrays in Qt unit testing如何在 Qt 单元测试中比较数组
【发布时间】:2012-04-22 15:02:46
【问题描述】:

我必须比较我的预期数组和通过调用我的函数生成的数组。我知道这是一个简单的问题,但由于我是 Qt 的新手,任何人都可以帮助我解决这个问题。我的代码是

void TesterClass::testevolve()
{
    float T[100][100],A[100][100];
    A[0][0]=0;
    A[0][1]=75;
    A[0][2]=75;
    A[0][3]=75;
    A[0][4]=0;
    A[1][0]=0;
    A[1][1]=42.857;
    A[1][2]=63.169;
    A[1][4]=30;
    A[2][0]=0;
    A[2][1]=33.258;
    A[2][3]=76.116;
    A[2][4]=30;
    A[3][0]=0;
    A[3][1]=33.928;
    A[3][2]=52.455;
    A[3][3]=69.642;
    A[3][4]=30;
    A[4][0]=0;
    A[4][1]=50;
    A[4][2]=50;
    A[4][4]=0;

    ClassInitiate ci;
    ClassOutput co;
    int i,j;
    float c[100][100]=ci.initializeArray(T[100][100]);
    co.output(c[100][100]);
    for(i=0;i<=4;i++)
    {
        for(j=0;j<4;j++)
        {
            QVERIFY2(A[i][j]==c[i][j], "evolving array failed");
        }
    }
}

我知道这个测试用例有问题。谁能告诉我写这个的正确方法。

【问题讨论】:

  • 请解释您遇到的问题。
  • 我不知道如何编写一个测试用例来比较 Qt 单元测试中的两个数组
  • 解释你遇到的问题与那段代码。它在做什么/不做什么?它是否正在编译,如果没有,错误是什么?如果它运行,会发生什么?

标签: c++ unit-testing qt


【解决方案1】:

对于原始内存 C 数组,您不能轻易做到这一点——您应该将它们包装在某种实现 == 运算符的类中。

如果你不能做到这一点,那么你现在拥有的可能是你将得到的最好的。

【讨论】:

    【解决方案2】:

    QCOMPARE 只是比较指针值,而不是数组元素值:

    FAIL!  : SC_tests::testSeemCarving() Compared pointers are not the same
    Actual (array): 0x93c6168
    Expected (array1): 0x92d9a50
    

    【讨论】:

      猜你喜欢
      • 2012-06-18
      • 2013-02-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-25
      • 1970-01-01
      • 1970-01-01
      • 2011-01-13
      • 1970-01-01
      相关资源
      最近更新 更多