我是JUnit和Mockito的新手,我想在我的DAO测试课中模拟我的SessionFactory,这就是我继续的方式:
@RunWith(MockitoJUnitRunner.class)
public class TodoDaoTest {
@Mock
SessionFactory sessionFactory;
@InjectMocks
TodoDao todoDao;
@Mock
Session session;
@Mock
Query query;
@BeforeClass
public static void setUpClass(){
}
@Before
public void setUp(){
Mockito.when(query.setParameter(any(int.class), any(Object.class))).thenReturn(query);
Mockito.when(session.createQuery(any(String.class))).thenReturn(query);
Mockito.when(sessionFactory.getCurrentSession()).thenReturn(session);
MockitoAnnotations.initMocks(this);
}
@Test
public void getTodosByUserIdShouldNotReturnNull(){
User user = new User();
assertNotNull(todoDao.getTodosByUserId(user.getId()));
}
}
这是我的刀类
@Component
@Transactional
public class TodoDao implements ITodoDao {
@Autowired
private SessionFactory sessionFactory;
@Override
@PostFilter("filterObject.userByUserId == authenticationFacade.getAuthenticatedFacade()")
public List<Todo> getTodosByUserId(int userId) {
List todos;
todos = sessionFactory.getCurrentSession().createQuery("from Todo where userId = ?").setParameter(0, userId).list();
return todos;
}
}
但是当我运行我的测试时,我有一个< code > Java . lang . NullPointerException 异常,nullPointerException在< code > todos = session factory . getcurrentsession()行的级别。创建查询(...)
的。create query(" from Todo where userId =?")方法调用返回null。您也应该设置模拟会话。
在一个测试中,如果我放置<code>MockitoAnnotations,我当前打开了它。initMocks(this)在<code>Mockito.when(…)。然后返回(…)。
尝试做初始化,然后做模拟。
我的理解是,MockitoAnnotations.initMocks(this)
初始化了存根依赖项。然后,这将允许 when(...)。然后返回(...)
要在存根上设置的行为。如果您尝试先设置行为,则依赖项尚未初始化,因此是 NullPointerException。
在摩奇托的javadoc中有一些描述
DAO类的相关方面如下 我的src/test/resources/application.properties文件如下所示 在Eclipse中作为JUnit测试运行的跟踪 应用程序结构 -SRC ----application.java ----COM ----Hitstpa ----application.properties --测试 ---爪哇
customer-Mapper.xml daoimpl.java
我正在使用JUnit测试一个DAO类,我得到了一个nullpointerexception,我不知道为什么要启动服务类。以下是测试类: 以下是UserDaoImpl 如何在测试类中注入类?我想nullpointerxeception的原因是dao类没有正确地注入到测试类中
我想测试我的Spring应用程序。当我将@SpringBootTest添加到我的测试类中时,即使我等待了一个多小时,测试也会挂起并且不会开始!删除SpringBootTest注释会导致初始化@Value字段失败,并且我无法测试任何组件类。我的配置类代码: 我的测试类: 运行测试类时的堆栈跟踪: 当我运行该测试时,该测试处于挂起状态:
问题内容: 我已经开始发现Mockito库,并且有一个我没有找到正确答案的问题。 例如,如果我的UserDAO类中有将用户保存到数据库中的此类方法: 我应该如何测试? 如果我想测试一个DAO类,那么我需要创建一个模拟,模拟,模拟等吗?如此不测试数据库本身? 但是,如果我还想测试dao和数据库的行为怎么办? 您能否提供一些代码示例,可能有用的链接,并显示实现此目的的最佳方法? 问题答案: 这是使用M
我开始使用Dropwizard,并尝试创建一个需要使用数据库的命令。如果有人想知道我为什么要这么做,我可以提供很好的理由,但这不是我的问题的重点。它是关于Dropwizard中的依赖关系反转和服务初始化和运行阶段。 Dropwizard鼓励使用其DbiFactory构建DBI实例,但为了获得一个实例,您需要实例和/或数据库配置: 如您所见,您的 方法中有服务及其环境的配置,但需要在其 方法中将命令