0

私はグーグルテストフレームワークを使おうとしましたが、なぜ次のコードがわかりません:

TEST(MathTest, BelowZeroCandF)
{
    EXPECT_DOUBLE_EQ(convertCtoF(-1), 30.2);
}

どこ

double convertCtoF(double c)
{
    return 32+1.8*c;
}

失敗します:

Failure
Value of: -30.20
  Actual: -30.199999999999999
Expected: tc.convertCtoF(-1)
Which is: 30.199999999999999
[  FAILED  ] MathTest.belowZeroCaboveZeroF (1 ms)

EXPECT_NEARを使用できることはわかっていますが、上記が機能しない理由がわかりません...

4

1 に答える 1

5

(OPがコメントのエラーを確認したため、回答を追加して投稿を完了します。)

エラー レポートに示されているように、OP は誤って結果にマイナス記号を追加しましたが、これは間違いです。タイプミスを削除すると、問題が解決しました。

また、GTest や他の多くの単体テスト フレームワーク (JUnit など) では、アサーションのパラメーターの順序は次のとおりです。

EXPECT_DOUBLE_EQ(30.2, convertCtoF(-1));
//               ^     ^ actual value
//               expected value

そうしないと、OPが示したように、エラーレポートの入力の説明が反転します。

于 2012-09-07T07:44:29.773 に答える