当前位置: 首页 > 面试题库 >

通过使用JUnit @Rule使用Mockito进行参数化测试?

祁星阑
2023-03-14
问题内容

这是从这个问题开始的:要求我在哪里开始一个新的问题。

问题是我只是对JUnit Rule或有关的东西之类的东西还不够了解,Runners无法用Jeff Bowman提到的方式解决问题。


问题答案:

在您以后的评论中,我指出了差距:您需要使用Mockito作为规则,而将参数化为Runner,而不是相反。

原因是Runner负责报告测试数量,而Parameterized则根据测试方法的数量和参数化输入的数量来操纵测试的数量,因此Parameterized成为Runner流程的一部分非常重要。相比之下,使用Mockito运行器或规则只是封装用于初始化Mockito批注和验证Mockito使用情况的@Before@After方法,因为@Rule与其他@Rule实例相邻工作时,可以很容易地做到这一点-
直到MockitoJUnitRunner是几乎已弃用。

要直接从“ JUnit4参数化测试”文档页面和MockitoRule文档页面婴儿床:

@RunWith(Parameterized.class)
public class YourComponentTest {

    @Rule public MockitoRule rule = MockitoJUnit.rule();
    @Mock YourDep mockYourDep;

    @Parameters
    public static Collection<Object[]> data() {
        return Arrays.asList(new Object[][] {     
                 { 0, 0 }, { 1, 1 }, { 2, 1 }, { 3, 2 }, { 4, 3 }, { 5, 5 }, { 6, 8 }  
           });
    }

    private int fInput;

    private int fExpected;

    public YourComponentTest(int input, int expected) {
        fInput = input;
        fExpected = expected;
    }

    @Test
    public void test() {
        // As you may surmise, this is not a very realistic example of Mockito's use.
        when(mockYourDep.calculate(fInput)).thenReturn(fExpected);
        YourComponent yourComponent = new YourComponent(mockYourDep);
        assertEquals(fExpected, yourComponent.compute(fInput));
    }
}


 类似资料:
  • 下面是这个问题:我被要求从哪里开始一个新问题。 问题是我对JUnit了解不够,或者对等的了解不够,无法以Jeff Bowman提到的方式解决这个问题。

  • 问题内容: 使用Mockito,我可以执行以下操作: 但是,如果要取而代之,我该怎么写呢?无法弄清楚如何正确编写。刚收到语法错误… 问题答案: 尝试: 实际上,当我键入IntelliJ时,它会自动建议此修复程序。不幸的是,在这种情况下,您不能使用静态导入。

  • 我有这个过滤器类,在使用junit进行测试时需要尽可能高的代码覆盖率。 和测试等级: 当我运行时,它在 线 我如何避免这种情况? 我需要调用这个方法并执行里面的任何内容来提供所需的代码覆盖。

  • 我使用JUnit4和Mockito创建了一个Spring Boot2应用程序。当我测试某种方法时。会出现这样的例外: 这是我的测试代码 SuveryService.java SurveyRepository.java 我引用了这篇文章Mockito NullPointerException,但这个问题仍然存在。任何帮助都将被应用。

  • 我有DaoImpl类: 我的测试是: 测试是成功的,但是当我运行具有覆盖率的junit测试时,它显示方法没有被覆盖,因此我的整体单元测试行覆盖率低于要求。我们能涵盖那部分吗?如果是,我们怎么做?谢了。

  • 我对junit mockito非常陌生,并尝试使用mockito编写junit测试用例。 这是我的方法,我必须为此编写一个jUnit。 ChefService和ChefApi传递的方法参数来自第三方api 这里是呼叫chefService。listCookbookVersions()将返回CookBookVersion类类型的迭代器,如