我有一个类,我正在为我的服务注入一个代理。
Service service
{
private ServiceProxy proxy;
public Service(ServiceProxy proxy)
{
this.proxy = proxy;
}
}
ServiceTest
{
@Mock
ServiceProxy mockProxy;
Service service = new Service(mockProxy);
}
如果您使用的是Mockito版本1.9.0或更高版本,那么实现所需目标的最佳方法如下所示:
@RunWith(MockitoJUnitRunner.class)
public class ServiceTest {
@Mock
private ServiceProxy proxy;
@InjectMocks
private Service service;
@Test
public void test() {
assertNotNull(service);
assertNotNull(proxy);
}
}
首先是@runwith(MockitoJUnitRunner.class)
声明,它将导致@mock和@injectMocks注释自动工作,而不需要任何显式初始化。第二件事是,从Mockito1.9.0开始,@InjectMocks注释可以使用构造函数注入机制,这是服务类的最佳选择。
@InjectMocks的其他选项是Setter注入和Field注入(请参见文档),但您需要一个no argument构造函数来使用它们。
如果由于某种原因您不想使用@InjectMocks,唯一的方法是在测试方法体中或在@Before注释的setUp方法中构造您的服务对象。
请考虑以下代码: 此外,出现此错误的原因可能是:1。您使用final/private/equals()/hashCode()方法中的任一个作为存根。这些方法不能被截取/验证。不支持在非公共父类上声明的模拟方法。2.内部when()不是对mock而是对其他对象调用method。 我是通过Guice进行依赖注入的新手,不知道为什么我不能以这种方式模拟实现对象?
我有一个Spring Boot应用程序和服务,里面有私有的道场。私有DAO属性使用进行注释(没有设置器或构造器设置它,只有注释)。我试图为服务编写Spock测试,但找不到如何将模拟DAO注入变量。
问题内容: 我知道关于模拟和测试有很多问题,但是我发现没有任何问题可以完美地帮助我,因此我仍然对理解以下内容有疑问: 如果我弄错了,请纠正我,但据我所知,单元测试用于隔离测试一个特定类的业务逻辑,并且如果有外部需要的任何对象,它们将被模拟。因此,例如,如果我有一个简单城市居民的管理系统,该系统将居民添加到列表中并按姓名返回居民(假设:居民仅包含一些基本个人信息),如下所示: 如果现在我要进行单元测
我有一个带有的测试类,它用于初始化Mockito: 现在我有一个@autowired field来获得方面的建议,但不能注入模拟。
当使用mockito单元测试Spring mvc控制器时,如何注入道层对象。当使用SpringJUnit4ClassRunner类时,它总是使用@Spy注释给空指针异常。 示例代码: 在这个测试用例中,依次调用,它总是返回