Java 如何模拟由服务创建的实例?

Java 如何模拟由服务创建的实例?,java,mockito,Java,Mockito,我用的是mockito。我的服务正在创建Runnable classe的实例,然后使用Spring调度器计划它的运行 我想测试服务并验证是否调用了“run”方法,但由于实例是在服务中创建的,所以我无法模拟它(或者不知道如何模拟)。 我该怎么办?mockito有可能吗?很难说,因为它可能真的取决于您服务的体系结构,但我会尝试将Runnable实例的创建和运行调度分开 这样,您就有了两个不同的单元,它们将更易于测试 如果很难对您的方法进行单元测试,您可能需要将它们拆分。我对您在这里尝试验证的内容有点

我用的是mockito。我的服务正在创建Runnable classe的实例,然后使用Spring调度器计划它的运行

我想测试服务并验证是否调用了“run”方法,但由于实例是在服务中创建的,所以我无法模拟它(或者不知道如何模拟)。
我该怎么办?mockito有可能吗?

很难说,因为它可能真的取决于您服务的体系结构,但我会尝试将Runnable实例的创建和运行调度分开

这样,您就有了两个不同的单元,它们将更易于测试


如果很难对您的方法进行单元测试,您可能需要将它们拆分。

我对您在这里尝试验证的内容有点困惑。服务不应该关心调用了
run
,而是应该通知调度程序它需要做的工作。因此,您应该模拟调度程序并确保它具有正确的可运行性


调用的运行是调度程序的一部分,您应该能够假设它是经过良好测试的代码,不需要您仔细检查它是否工作。

您可能是对的,但我喜欢将功能作为黑盒进行测试。我的意思是,服务是在给定的时间运行东西,所以这就是我想要测试的。我不在乎它是如何完成的,所以我不知道它正在使用Spring调度器,所以我不想模拟和测试调度器。我不知道如何将“测试为黑盒”和添加模拟结合在一起。当然是假的服务,但mock与IMO中的“黑盒”相反。同样,我不确定您在这里尝试验证的是什么,服务是否工作,在这种情况下,使用Spring调度程序是其中的一个重要部分。如果有什么东西在使用你的服务,那么不要嘲笑Spring,嘲笑你的服务。很好,我可以让我的服务作为singleton运行,这样我就可以嘲笑它们了。谢谢