gpt4 book ai didi

java - 是否可以使用 junit 和 mockito 创建嵌套单元测试?

转载 作者:行者123 更新时间:2023-11-29 07:18:29 28 4
gpt4 key购买 nike

例如:

@RunWith(MockitoJUnitRunner.class)
public class ClientFormServiceTest {
@Mock
ClientFormService clientFormService;

public class GetNewClientFormTest {
@Mock
protected ClientForm result;

@Before
public void given() {
result = clientFormService.getNewForm();
}

@Test
public void should_do_something() {
}
}

public class CreateClientFormTest {
@Mock
protected ClientForm clientForm;

@Before
public void given() {
clientFormService.createForm(clientForm);
}

@Test
public void should_do_something() {
}
}

这是我想做的,但如果嵌套到一个类中,我将无法运行单元测试。

最佳答案

我是 JUnit TestRunner 的作者,junit 嵌套,我相信它可以做你想做的事:https://github.com/avh4/junit-nested

但是,从您的示例中不清楚为什么需要嵌套测试。使用它们的典型原因是共享设置行为,但您应该考虑使用单独的测试类是否更合适。

无论如何,以下是使用 junit-nested 执行此操作的方法:(由于 Nested 是一个测试运行程序,因此您必须使用 MockitoAnnotations.initMocks() 而不是 Mockito 测试运行器。)

import net.avh4.test.junit.Nested;

@RunWith(Nested.class)
public class ClientFormServiceTest {
@Mock
ClientFormService clientFormService;

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

public class GetNewClientFormTest {
@Mock
protected ClientForm result;

@Before
public void given() {
MockitoAnnotations.initMocks(this);
result = clientFormService.getNewForm();
}

@Test
public void should_do_something() {
}
}

public class CreateClientFormTest {
@Mock
protected ClientForm clientForm;

@Before
public void given() {
MockitoAnnotations.initMocks(this);
clientFormService.createForm(clientForm);
}

@Test
public void should_do_something() {
}
}
}

关于java - 是否可以使用 junit 和 mockito 创建嵌套单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7342867/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com