【问题标题】:Use @DataProvider with Jmockit将 @DataProvider 与 Jmockit 一起使用
【发布时间】:2013-09-02 10:18:36
【问题描述】:

我正在为我的项目使用 Testng 6.8.5 和 Jmockit 1.4。我想将 testng @DataProvider 与 Jmockit @Mocked 注释与测试参数级别一起使用。

@Test
public void testRemove(@Mocked Creator) throws Exception {
   //Test Code
}

我想对不同的数据集使用上述测试(使用@DataProvider),但是当我将方法签名更改为:

public void testRemove(@Mocked Creator creator, int id, String name)

其中idname 由DataProvider 提供,TestNG 失败说DataProvider 只提供两个参数,而不是三个。

有谁知道如何做到这一点?

【问题讨论】:

  • 应该没问题 - 你遇到了什么问题?
  • 问题是使用带有@DataProvider 参数的@Mocked 注释。例如public void testRemove(@Mocked Creator creator, int id, String name){。这里 id 和 name 来自 dataproider。对于这个 Testng 失败的测试,指定 @DataProvider 没有给出 3 个参数,这是真的。
  • 我明白了 - 我想你可以在方法中模拟创建者,例如在期望块中。

标签: java testng jmockit


【解决方案1】:

您的模拟对象必须是测试类的字段。

public class UserTest {

    @Mocked
    Creator creator;


    @DataProvider(name = "my data provider")
    public Oject[][] dataProvider() {
    //code data proviver
    }


    @Test(dataProvider = "my data provider")
    public void testRemove(int id, String name) {
        new Expectations() {{
            creator.doSomething(...);
            result = expectedResult;

            //other expectation
        }};
        //other test code
    }
}

【讨论】:

    【解决方案2】:

    您还可以执行以下操作(我使用 TestNG 6.8.21 和 Jmockit 1.20 对其进行了测试,它正确地模拟了对象):

    public class UserTest {
    
        @DataProvider(name = "creatorProvider")
        public Oject[][] dataProvider() {
          return new Object[][] {{null, 1 "t1"}, {null, 2, "t2"}};
        }
    
    
        @Test(dataProvider = "creatorProvider")
        public void testRemove(@Mocked final Creator creator, int id, String name) {
            new Expectations() {{
                creator.doSomething(id, name); result = expectedResult;
            }};
    
            //other test code
        }
    }
    

    【讨论】:

      【解决方案3】:

      除了声明@Mocked 类字段,您还可以使用dynamic partial mocking 声明一个本地@Mocked 对象。

      部分模拟仅模拟您记录的方法(不会模拟未显式模拟的方法;它们将使用其默认实现)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-04-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-23
        • 1970-01-01
        相关资源
        最近更新 更多