当前位置: 首页 > 知识库问答 >
问题:

JMockit基本知识:模拟对象、模拟参数、期望

养星汉
2023-03-14
public class MyClassTest
{
    @Mocked({"method1","method2"})
    ClassA classA;  //ClassA has only static method

    @Mocked
    ClassB classB;

    @Test
    public void test1()
    {
        new NonStrictExpectations() {{
            MyClassA.method3(classB);
            result = xxx;
        }};

        // testing code
        ....

        // verification
        ...
    }

    @Test
    public void test2(@Mocked ClassC classC)
    {
        ...
    }
}
  1. 关于@mocked声明为junit测试的实例变量,如@mocked ClassB ClassB:

(1)对于junit,实例变量是为每个测试新创建的(比如test1()、test2()),对吗?在每个测试运行之前,是否会创建一个新的模仿的ClassB实例?

(2)它嘲笑班级。它使ClassB中的所有方法对所有测试(在本例中是test1()和test2())都是模拟的,对吗?

共有1个答案

竺展
2023-03-14

回答您的问题:

>

  • (1)是;(2)是;(3)是的,并且其他方法不能在这个相同的测试类中被嘲笑。

    是的,仅在具有mock参数的测试中。

  •  类似资料:
    • 上面还有第二个问题。当我在Expects块中定义mock类时(如上),似乎只调用了构造函数,而不是,因此没有正确初始化对象。我通过将它移到方法中并在那里实例化该类来解决这个问题。看起来是这样的: 因此,这似乎得到了要调用的正确构造函数,但似乎还在调用。有什么见解吗?

    • 诚然,我对JMockit是新手,但出于某种原因,我在模仿System.getProperties()时遇到了麻烦。感谢以下帖子的帮助: https://stackoverflow.com/questions/25664270/how-can-i-partially-mock-the-system-class-with-jmockit-1-8?lq=1 我可以使用JMockit 1.12成功地模拟S

    • 我有以下课程布局: 我正在为服务创建一个单元测试,但我想将ServiceHelper用作一个“活动”类,但要模拟ServiceHelper中的构造函数参数。有没有办法通过Mockito实现这一点?

    • 所以我想做一些事情 但我得到了空异常

    • 如何模拟返回已强制转换的模拟对象的方法。 试验方法。

    • 出于学校目的,我正在创建一个使用股票API的应用程序。 我正在尝试为一种获取过去10年所有股票数据的方法编写一个测试。我不想实际获取所有这些数据,而是想抛出一个异常。 我想测试的方法: 股票时间系列(....)调用可以抛出阿尔法仓位异常。 我这样嘲弄了TimeSeries类: 在我的测试类中,我想模拟这个调用,并返回一个异常而不是实际数据。 无论我多么试图嘲笑这段代码,它永远不会抛出异常。它将始终