簡體   English   中英

為什么我的assertEquals不起作用?

[英]Why my assertEquals doesn't work?

我正在測試我的一個方法, double getSqrt(double s) ,並具有以下JUnit測試代碼:

@Test
public void testGetSqrt() {
    System.out.println("getSqrt");
    double s = 16.0;
    Calculator instance = new Calculator();
    double expResult = 4.0;
    double result = 4.000000000052429; // was "instance.getSqrt(s);" here
                                       // now hardcode for test purpose
    System.out.println(System.getProperty("java.class.path"));
    assertEquals(expResult, result, 0.0);
}

無論我如何改變公差“0.0”,“0.1”,“0.00”,“0.01”,“0.001”......它每次都失敗了....報告如下:

AssertionFailedError:expected:<4.0>; 但是:<4.000000000052429>

我使用的是JUnit 4.12和Hamcrest 1.3。

我的進口:

import org.junit.Test;
import static org.junit.Assert.*;

我使用了錯誤的容差嗎?

控制台上的輸出:

compile-test-single:
Testsuite: descriptivestatisticsapplication.processing.CalculatorTest
getSqrt
Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.079 sec

------------- Standard Output ---------------

getSqrt

C:\Java\jdk1.8.0_111\jre\lib\javaws.jar;C:\Java\jdk1.8.0_111\jre\lib\deploy.jar;C:\Java\jdk1.8.0_111\jre\lib\plugin.jar;C:\Users\Z\Documents\NetBeansProjects\DescriptiveStatisticsApplication\build\classes;C:\Program Files\NetBeans 8.2\platform\modules\ext\junit-4.12.jar;C:\Program Files\NetBeans 8.2\platform\modules\ext\hamcrest-core-1.3.jar;C:\Users\Z\Documents\NetBeansProjects\DescriptiveStatisticsApplication\build\test\classes;C:\Program Files\NetBeans 8.2\extide\ant\lib\ant-launcher.jar;C:\Program Files\NetBeans 8.2\extide\ant\lib\ant.jar;C:\Program Files\NetBeans 8.2\extide\ant\lib\ant-junit.jar;C:\Program Files\NetBeans 8.2\extide\ant\lib\ant-junit4.jar

------------- ---------------- ---------------

5月27日更新:

根據評論中的建議進行一些測試后,此單元測試現在可以成功通過。 我認為這個問題可以結束。

我擔心的是我沒有找到任何原因導致它失敗,為什么現在它成功了! 相同的代碼,相同的邏輯! 我唯一做的就是注釋掉一些非重要的行然后再添加它們,更改一些聲明語句序列然后再更改它們。 相同的代碼有不同的行為。 我沒有在構建和運行env和libs中改變任何東西。 這沒有任何意義。 一段代碼的結果應該是可重現的。

Java中的浮點數並不精確,因為您已經看到結果<4.000000000052429>換句話說,您在java中將浮點數設置為4,實際上不是4.您可以使用long或甚至BigInteger來解決此問題。

暫無
暫無

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

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