如何使用JUnit和Hamcrest比较双打?

Tim*_*m B 12 java junit hamcrest

我正在使用JUnit和Hamcrest编写单元测试.我一直在使用以下方法比较双值:

assertThat(result, is(0.5));
Run Code Online (Sandbox Code Playgroud)

但是,我现在需要比较计算值,我不想与完整的double值进行比较.相反,我想比较接近.

我发现了一个名为IsCloseTo但是我不确定如何使用它的类assertThat,我在网上找不到任何例子.

执行以下操作的正确语法是什么?

// I can't do this as I need to know what methods/classes whatever I should be using
// isCloseTo doesn't exist.
assertThat(result, isCloseTo(0.5, 0.1)); 
Run Code Online (Sandbox Code Playgroud)

nic*_*ckb 22

你应该可以打电话Matchers.closeTo(double, double).使用静态导入,它看起来像:

assertThat(result, closeTo(0.5, 0.1));
Run Code Online (Sandbox Code Playgroud)

  • 正在搜索它的人的完全静态导入是:import static org.hamcrest.Matchers.closeTo; (5认同)

Jam*_*udd 5

如果您使用,您可以更好地阅读

assertThat(actual, is(closeTo(expected, delta)));
Run Code Online (Sandbox Code Playgroud)

import static org.hamcrest.Matchers.closeTo;
import static org.hamcrest.Matchers.is;
Run Code Online (Sandbox Code Playgroud)

  • 没错,它不需要_它。这是为了使代码更具可读性。 (4认同)