小编Fra*_*ois的帖子

如何在JUnit中比较两个double列表

在JUnit 4测试中,我有一个方法getValues()返回一个List<Double>我想要与引用列表进行比较的对象.到目前为止,我发现的最佳解决方案是使用org.hamcrest.collection.IsArray.hasItemsorg.hamcrest.Matchers.closeTo喜欢这样:

assertThat(getValues(), hasItems(closeTo(0.2, EPSILON), closeTo(0.3, EPSILON)));
Run Code Online (Sandbox Code Playgroud)

这适用于仅返回少量值的测试.但是如果测试返回更多值,这绝对不是最好的方法.

我也尝试了以下代码.要编译的代码需要向下转换为Matcherbefore hasItems:

List<Matcher<Double>> doubleMatcherList = new ArrayList<Matcher<Double>>();
doubleMatcherList.add(closeTo(0.2, EPSILON));
doubleMatcherList.add(closeTo(0.3, EPSILON));
assertThat(getValues(), (Matcher) hasItems(doubleMatcherList));
Run Code Online (Sandbox Code Playgroud)

比较失败,我不明白为什么:

java.lang.AssertionError:Expected :(一个包含<[数字值<1.0E-6> <0.2>的数字​​,<1.0> -0> <0.3>的数值>]>的集合得到:<[ 0.2,0.30000000000000004]>

是否有更好的方法来比较两个大型双打名单?这里的困难是需要数值公差来验证结果getValues()是否等于我的参考列表.对于任何对象列表,这种比较似乎都很容易,但对于列表却没有Double.

java junit hamcrest

9
推荐指数
2
解决办法
2085
查看次数

使用 OpenJDK 12 使用 Mockito 启动 JUnit 时如何摆脱“无法初始化插件:接口 org.mockito.plugins.MockMaker”

我一直在将一个项目从 Java 8 迁移到 Java 12。除了单元测试之外,一切都很顺利。当我使用 Maven 编译和启动测试时,许多测试失败并显示以下消息:

java.lang.IllegalStateException: Could not initialize plugin: interface org.mockito.plugins.MockMaker (alternate: null)
    at com.tetratech.csoft.ui.jfx.AppContextTest.<init>(AppContextTest.java:22)
Caused by: java.lang.IllegalStateException: Failed to load interface org.mockito.plugins.MockMaker implementation declared in java.lang.CompoundEnumeration@35fd987b
Caused by: org.mockito.exceptions.base.MockitoInitializationException: 

Could not initialize inline Byte Buddy mock maker. (This mock maker is not supported on Android.)

Java               : 12
JVM vendor name    : Oracle Corporation
JVM vendor version : 12+33
JVM name           : OpenJDK 64-Bit Server VM
JVM version        : 12+33
JVM info           : mixed mode, …
Run Code Online (Sandbox Code Playgroud)

java junit unit-testing mockito

9
推荐指数
1
解决办法
1万
查看次数

ArgumentMatchers.any()与Mockito 2中的其他匹配器

与2的Mockito,应当ArgumentMarchers.any()被用来代替像更具体的匹配器ArgumentMatchers.anyString()ArgumentMatchers.anyList()例如?应该使用特定的匹配器使代码更具可读性吗?

根据经验,使用本机时OBJETS( ,intlongdouble),boolean特定的匹配器anyInt()anyLong()anyDouble()anyBoolean()是优选的。但是其他匹配器呢?有任何想法吗?谢谢。

java unit-testing mockito

0
推荐指数
1
解决办法
4317
查看次数

标签 统计

java ×3

junit ×2

mockito ×2

unit-testing ×2

hamcrest ×1