junit测试为timestamp添加5秒:没有为parameter[object]注册parameterresolver

cygmwpex  于 2021-07-14  发布在  Java
关注(0)|答案(1)|浏览(267)

**结束。**此问题需要详细的调试信息。它目前不接受答案。
**想改进这个问题吗?**更新问题,使其成为堆栈溢出的主题。

四天前关门了。
改进这个问题
我编写了一个更新对象时间戳的方法。它工作正常,值按预期方式更新。但是,我不能让单元测试工作。
cake有一个值inspectiondate,它用对象第一次创建时的时间戳初始化。
这是我的方法:

public static void updateInspectionDate(Cake cakeToBeUpdated){ 
        cakeToBeUpdated.setInspectDate(new Date(System.currentTimeMillis()));
    }

这是我的测试(尝试了几种测试方法,这是我的当前版本),obejct已经在测试类中创建:

@Test 
    void updateInspectionDateTest(Cake apple) throws InterruptedException {
        Calendar newInspectionDate = Calendar.getInstance(); //create new date that`s current inspection date + 5 seconds
        newInspectionDate.setTime(apple.getInspectiondate());
        newInspectionDate.add(Calendar.SECOND, 5);

        TimeUnit.SECONDS.sleep(5); //wait 5 seconds
        updateInspectionDate(apple); //inspection date of apple will be updated to 5 seconds after it was inserted

        assertEquals( newInspectionDate.getTime(), apple.getInspectiondate());
    }

这就是我得到的错误:
org.junit.jupiter.api.extension.parameterresolutionexception:没有为方法[void caketest.updateinspectiondate(cake)throws java.lang.interruptedexception]中的参数[cake arg0]注册parameterresolver。
那么到底出了什么问题,如何解决这个问题呢?

lf3rwulv

lf3rwulv1#

您已经创建了一个带有参数的测试方法。通常,测试没有参数。仅当它们由参数化运行执行时(对多个值运行相同的方法)。
你的测试方法应该是 void updateInspectionDateTest() . 但是请考虑一个更有意义的名字,而不是它应该测试的那个名字。

相关问题