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

JUnits4在没有任何类级注释的情况下运行?我在这里遗漏了什么?

秦滨海
2023-03-14

实现JUnits的大多数示例代码都以以下注释的重要性开始:

@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(MockServletContext.class)
    null

请协助。

共有1个答案

宗晟
2023-03-14

JUnit是一个独立于Spring的测试框架。这意味着测试默认情况下不使用Spring。

JUnit使用Runner来运行测试。类级别注释@runwith告诉JUnit,它应该使用特定的runner而不是默认的BlockJUnit4ClassRunner来运行测试。例如,@runwith(SpringJUnit4ClassRunner.class)为JUnit添加了有助于测试Spring应用程序的附加特性。

对于大多数测试,您不需要特定的运行器。默认运行程序为大多数测试提供了足够的特性。

public class ExampleTest {

    @Mock
    private YourClass something;

    @InjectMocks
    private AnotherClass sut;

    @Rule
    public final MockitoRule mockito = MockitoJUnit.rule();

    @Test
    public void shouldDoSomething() {
        //test code
    }
}

使用mockitoAnnotations#initMocks在@before方法中初始化模拟。

public class ExampleTest {

    @Mock
    private YourClass something;

    @InjectMocks
    private AnotherClass sut;

    @Before
    public void initMocks() {
        MockitoAnnotations.initMocks(this);
    }

    @Test
    public void shouldDoSomething() {
        //test code
    }
}

使用MockitoJunitRunner运行测试。运行器的缺点是只能由一个运行器运行,因此不能将其与另一个运行器组合。

@RunWith(MockitoJUnitRunner.StrictStubs.class)
public class ExampleTest {

    @Mock
    private YourClass something;

    @InjectMocks
    private AnotherClass sut;

    @Test
    public void shouldDoSomething() {
        //test code
    }
}
 类似资料:
  • 你能给我解释一下这段代码吗,为什么我们没有任何返回类型,代码仍然工作正常?

  • 文档说这个库运行在GPU上。如果我功能强大的笔记本电脑没有GPU,我还能运行Deeplearning4J吗?

  • 我正在从文档中学习反应,但不确定在这个例子中超级()做什么。通常,它不需要传递给创建新实例的参数,然后调用React吗?组件的构造函数方法将这些参数合并到实例中?没有任何争论它是做什么的?

  • 我试图了解DI在我们的代码库(Kotlin)中是如何使用的。我们正在使用googleguice进行依赖注入。 下面是一个示例类: 在模块类中: DepB类别: 据我所知,对于用< code>@Inject注释的变量,Google Guice会使用模块类来解决这些依赖关系。所以< code>DepA对象的注入方式是有意义的。 但是呢?我们如何能够在不指定任何位置的情况下注入DepB?

  • 我正在使用Cucumber for BDD、JUnit和Selenium构建一个自动化框架,我们在云中有一个testrail实例用于测试管理,我实现了testrail API以从那里获取所有测试用例,问题是我无法运行这些步骤获取测试用例,因为总是验证第一个功能文件是否存在。 我尝试过结果总是一样的: 在[classpath:features] 0场景0步骤0m0.019s中找不到功能 这是启动该过

  • 我正在编写一个剧本,它旋转X个EC2 AWS实例,然后在它们上安装一些软件(apt包和pip模块)。当我运行playbook时,它会在我的本地系统上执行shell命令,因为Ansible不会运行,除非我指定一个主机并放置localhost。 在playbook中,我尝试在顶层指定“hosts:all”,但这只会让playbook运行一秒钟而不做任何事情。 EC2实例创建得很好,“wait for