Java 如何修复JUnit和POI测试用例的代码?

Java 如何修复JUnit和POI测试用例的代码?,java,maven,junit,apache-poi,testcase,Java,Maven,Junit,Apache Poi,Testcase,为什么我不能成功地测试这个案例 @Test public void test_Should_be_0() throws Exception { HSSFCell cell = new HSSFWorkbook().createSheet().createRow(0).createCell(0); cell.setCellValue(0); assertTrue(cell == 0); 谢谢您的帮助。您的测试assertTrue(cell==0)不正确,实际上您试图将

为什么我不能成功地测试这个案例

@Test
public void test_Should_be_0() throws Exception {

    HSSFCell cell = new HSSFWorkbook().createSheet().createRow(0).createCell(0);
    cell.setCellValue(0);

    assertTrue(cell == 0);
谢谢您的帮助。

您的测试
assertTrue(cell==0)
不正确,实际上您试图将对象的引用与
0
进行比较,但由于它们是不兼容的类型,因此无法工作,如果您想检查单元格的值是否为
0
,您应该这样做:

assertEquals(0.0, cell.getNumericCellValue(), 0.0);

我认为这是测试代码的一种方法:

(一)

或2)


因为如果数字不同,测试就不起作用。

它是如何编译的,您尝试将引用与
0
进行比较,但这不能确定是否起作用。@NicolasFilotto:谢谢您的快速回复,但当我编写cell.setCellValue(0)时;我没有把值放在单元格中吗?是的,但它不是您实际测试的内容,请查看我的答案以了解更多详细信息缓存POI附带了大量的单元测试,为什么不呢?您知道任何一本书来理解如何测试POI单元格或项目吗?如果我回答:
assertEquals(1,cell.getNumericCellValue(),3)测试再次正常工作,但这是错误的!你把这个值设为0,怎么可能等于1?也许我在原始代码中有错误。您的方法在我的eclipse上不起作用,但在我发布的下面的文章中起作用。我不知道为什么。@Lost\u在\u代码中你说的“你的方法不起作用”是什么意思?它有什么作用?您是否在
assertEquals
左侧有一个红色的小X?你的导入正确吗?第二个例子是个坏主意。如果您试图测试
setCellValue()
getNumericCellValue()
,但其中一个测试不正确,那么在相同的输入下,它将始终以相同的方式失败。因此,如果
cell.setCellValue(0)
9999
放入单元格中,
assertTrue(cell.getNumericCellValue()==0)
应该失败,因为它应该返回
9999
。但是,如果您使用
setCellValue(0)
设置两个单元格的值,然后使用
getNumericCellValue()
比较结果,它们应该相等,并且测试2中的断言将始终通过,即使函数不正确。
@Test
    public void test_Should_be_0() throws Exception {

        HSSFCell cell = new HSSFWorkbook().createSheet().createRow(0).createCell(0);
        cell.setCellValue(0);
        Assert.assertTrue(cell.getNumericCellValue() == 0);
@Test
    public void test_Should_be_0() throws Exception {

        HSSFCell cell = new HSSFWorkbook().createSheet().createRow(0).createCell(0);
        cell.setCellValue(0);
        HSSFCell cell2 = new HSSFWorkbook().createSheet().createRow(0).createCell(0);
        cell2.setCellValue(0);
        Assert.assertTrue(cell.getNumericCellValue() == cell2.getNumericCellValue());