我想使用模拟 DAO 对我的 Spring 应用程序中的服务层进行单元测试。在 DAO 中,seesinoFactory 是使用 @Inject 注入的。
当使用 @RunWith(MockitoJUnitRunner.class) 配置测试类时
@RunWith(MockitoJUnitRunner.class)
public class ServiceTest {
@Mock
private MyDao myDaoMock;
@InjectMocks
private MyServiceImpl myService;
}
输出与预期一样。
当我将配置更改为使用 @RunWith(SpringJUnit4ClassRunner.class)
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "/ServiceTest-context.xml")
public class ServiceTest {
@Mock
private MyDao myDaoMock;
@InjectMocks
private MyServiceImpl myService;
@Before
public void setup(){
MockitoAnnotations.initMocks(this);
}
}
如果 ServiceTest-context.xml 中的 sessionFactory bean 不可用,则将抛出异常“没有为依赖项找到类型为 [org.hibernate.SessionFactory] 的合格 bean”。
我不明白的是 MyDao 已经用 @Mock 注释了,为什么还需要 sessionFactory ?