我上了两节课。BatchDao和BatchDaoImpl。BatchDao是一个接口,BatchDaoImpl包含逻辑。你知道规则的。
我对Spring很陌生,这给我带来了一个问题。我如何在不使用容器的情况下对包含在里面的方法进行单元测试?通常情况下,我会像编写JUnit中的POJO一样编写我的方法,然后就这样结束了,就像我在大学时所做的那样。
public interface BatchDao {
public List<Batch> get_qry_Batch(ParameterBeanPost paramBean, QueryTableFields qrytblfields);
public QueryTableFields get_Query_TableFields(String qry_id);
}
BatchDaoImpl的代码:
public class BatchDaoJPA2Impl implements BatchDao {
@PersistenceContext(unitName="myPersistence")
private EntityManager entityManager;
//...lots of other variables
//...lots of other logic...
//Finally, we get to the method that thorws the NullPointerException
public QueryTableFields get_Query_TableFields(String qry_id)
{
try {
String qlString = "SELECT p FROM QueryTableFields p WHERE p.qry_id = ?1";
// The next line is what throws the NullPointerException
TypedQuery<QueryTableFields> query = entityManager.createQuery(qlString, QueryTableFields.class);
int param1 = Integer.parseInt(qry_id);
query.setParameter(1, (param1));
System.out.println("About to Execute the QueryTable");
return query.getSingleResult();
} catch (NoResultException e) {
// TODO Auto-generated catch block
System.out.println("No Result from QueryTable");
return null;
}
}
JUnit测试的代码:
import com.every.package.ever
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath*:/spring/applicationContext.xml")
public class BatchDaoJPA2ImplJUnitTest {
@Mock
private EntityManager entityManager;
BatchDaoJPA2Impl myBDI = new BatchDaoJPA2Impl();
@Test
public void testGet_Query_TableFields() {
QueryTableFields myQTFs = myBDI.get_Query_TableFields(null);
//Should just comeback with empty strings and not null.
assertNotNull(myQTFs);
}
}
@mock
只是一个注释,它本身没有任何行为。实际使用mock填充这些字段的行为可能来自以下两种情况之一
MockitoAnnotations.initMocks()
将解析类,并为每个用@mock
@runwith
语句中使用mockitojunitrunner
而不是springjunit4classrunner
。
因此,只需在@before
方法中添加mockitoannotations.initmocks(this)
,您就会开始嘲弄EntityManager
,而不是让它为null
。
如果您想注入一个实际的EntityManager
,可能会比较困难。然而,这不在你的问题范围之内,因为你问的是如何嘲弄它。关于这个问题,请参见:如何测试Spring数据存储库?这是:Spring无法注入实体管理器工厂
问题内容: 我有几个DAO对象,这些对象用于从数据库中检索信息,我 确实 想为它们编写一些自动化测试,但是我很难弄清楚该怎么做。 我正在使用Spring 来运行实际查询(通过准备好的语句)并将结果映射到模型对象(通过类)。 如果要编写单元测试,则不确定如何/应该模拟对象。例如,由于只有读操作,因此我将使用实际的数据库连接,而不模拟jdbcTemplate,但我不确定那是正确的。 这是批处理中最简单
我试图使用spring security和一个简单的home(root)控制器在spring-boot中运行单元测试,该控制器使用thymeleaf进行模板处理。我正在尝试编写一些单元测试,以验证我的安全权限是否正常工作,以及正确的数据是否隐藏或显示在我的模板(使用thymeleaf Spring Security集成)中。当我运行它时,应用程序本身确实可以正常工作。我只想通过一组集成测试来验证它
问题内容: 如何在单元测试中测试 hashCode()函数? 问题答案: 每当我覆盖equals和hash代码时,我都会按照Joshua Bloch在“ Effective Java”第3章中的建议编写单元测试。我确保equals和hash代码是自反的,对称的和可传递的。我还确保“不等于”对所有数据成员均正常工作。 当我检查对equals的调用时,我还要确保hashCode的行为符合预期。像这样:
问题内容: 我一直在学习AngularJS,并且在单元测试方面进展非常顺利,但是我遇到了一个棘手的问题。 假设我有一个简单的表格,例如: 如果我正在测试类似控制器的东西,我知道我会这样写(使用Jasmine + Karma): 但是我不知道我需要注入哪些服务,也没有运气在指南或文档中找到有关单元测试的文档。 一个单元如何在Angular中测试表单? 问题答案: 我不认为这是对此类内容进行单元测试的
我有DaoImpl类: 我的测试是: 测试是成功的,但是当我运行具有覆盖率的junit测试时,它显示方法没有被覆盖,因此我的整体单元测试行覆盖率低于要求。我们能涵盖那部分吗?如果是,我们怎么做?谢了。
本文向大家介绍对Angular.js Controller如何进行单元测试,包括了对Angular.js Controller如何进行单元测试的使用技巧和注意事项,需要的朋友参考一下 一、写个简单的Angular App 在开始写测试之前,我们先写一个简单的计算App,它会计算两个数字之和。 代码如下: 二、简单说说里面涉及的一些基本概念: 创建一个 module 什么是angular.modul