I was wondering, in Kotlin, is there the possibility to call the equivalent of the java method:
assertEquals(double expected, double actual, double precision)
because everytime I'm getting this method instead
assertEquals(expected: T, actual: T, message: String)
And i can't find the one with the precision parameter. Calling the Java one should be fine too I guess.
My call to the method:
assertEquals(5000.00, calculateCouponAmount(basicFaceValue, basicInterestRate, amortizationBullet, couponNumber1), 0.01)
I'm getting an error because 0.01 gets in the "message" field
I have figured it out!
This is how it's done
import org.junit.*
import Kotlin.Test.assertEquals
Assert.assertEquals(expected, actual, precision) // to use the jUnit standard one
assertEquals(expected, actual, message) // to use the Kotlin one
I couldn't find one, so I created my own set of functions:
import java.math.BigDecimal
import kotlin.math.abs
import kotlin.test.asserter
internal fun assertEquals(expected: Double, actual: Double?, epsilon: Double, message: String? = null) {
asserter.assertNotNull(null, actual)
asserter.assertTrue({ messagePrefix(message) + "Expected <$expected>, actual <$actual>, should differ no more than <$epsilon>." },
abs(expected - actual!!) <= epsilon)
}
internal fun assertEquals(expected: BigDecimal, actual: BigDecimal?, epsilon: Double, message: String? = null) {
asserter.assertNotNull(null, actual)
asserter.assertTrue({ messagePrefix(message) + "Expected <$expected>, actual <$actual>, should differ no more than <$epsilon>." },
(expected - actual!!).abs().toDouble() <= epsilon)
}
internal fun assertEquals(expected: Double, actual: BigDecimal?, epsilon: Double, message: String? = null) {
asserter.assertNotNull(null, actual)
asserter.assertTrue({ messagePrefix(message) + "Expected <$expected>, actual <$actual>, should differ no more than <$epsilon>." },
abs(expected - actual!!.toDouble()) <= epsilon)
}
internal fun messagePrefix(message: String?) = if (message == null) "" else "$message. "
Just check to make sure you're importing the correct class that has the desired assertEquals
method on it. Other than that you may want to verify that the calculateCouponAmount()
method returns a Double
.
It is now included in the official API for Double and Float:
fun assertEquals(
expected: Double,
actual: Double,
absoluteTolerance: Double,
message: String? = null
): Unit
fun assertEquals(
expected: Float,
actual: Float,
absoluteTolerance: Float,
message: String? = null
): Unit
See https://kotlinlang.org/api/latest/kotlin.test/kotlin.test/assert-equals.html
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.