2016-05-24 3 views
0

У нас есть проект Java с соответствующим набором тестов JUnit, который мы намерены запускать на платформе Linux. Он был разработан с использованием Windows без проблем.Различия между IntelliJ JUnit test runner и Gradle JUnit test runner от Linux

При запуске нашего тестового пакета с использованием gradle test в Linux начинают появляться различия с плавающей запятой. Также существует разница между тестировщиком IntelliJ и встроенным Gradle.

JDK используется: Sun JDK 1.8u91 x64

Running tests using 'gradle test' on Linux:    ERRORS (see below) 
Running tests using IntelliJ test runner on Linux:  OK 
Running tests using 'gradle test' on Windows:   OK 
Running tests using IntelliJ test runner on Windows: OK 

junit.framework.AssertionFailedError: expected:<-2.18> but was:<-2.1652631074322057> 
junit.framework.AssertionFailedError: expected:<1.11> but was:<1.1376954128942385> 
junit.framework.AssertionFailedError: expected:<373.32> but was:<375.4870142751794> 
+0

Можете ли вы привести примерный фрагмент кода тестируемого кода? Я предлагаю вам использовать 'java.math.BigDecimal', если вы хотите избежать проблем с плавающей точкой –

ответ

0

critial раздел:

final double amountInEUR = (amountInOtherCurrency - (quantity * commission)) * (closePrice * closePriceMultiplier); 

Как вы можете видеть, это финансовое приложение. Некоторые исследования BigDecimal действительно показывают, что это путь. Спасибо, Лэнс Ява!

Смежные вопросы