我使用Mockito测试我使用JUnit的java类。我是Mockito和Junit测试用例的新手。我有一个类,它有spring配置。请看下面的代码片段。
public abstract class AbstractTaskDao implements TaskDao {
@Autowired
NamedParameterJdbcTemplate jdbcTemplate;
@Override
public void addTask(BlockingQueue<String> queue, LocalDate tdate) {
String sql = getQuery();
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("tdate", Date.valueOf(tdate));
((JdbcTemplate) jdbcTemplate.getJdbcOperations()).setFetchSize(1000);
jdbcTemplate.query(sql, paramMap,new classA());
}
protected abstract String getQuery();
}
Below is my test class.
public class AbstractTaskDaoTest {
@Mock NamedParameterJdbcTemplate jdbcTemplate;
@Mock JdbcOperations operation;
BlockingQueue<String> myqueue;
@Before
public void setUp() throws IOException {
jdbcTemplate=mock(NamedParameterJdbcTemplate.class);
when(jdbcTemplate.getJdbcOperations()).thenReturn(operation);
//use reflection to inject autowired field.
org.springframework.test.util.ReflectionTestUtils.setField(abstratTaskPDao, "jdbcTemplate", jdbcTemplate);
}
@Test
public void testTask() throws InterruptedException{
LocalDate tdate=LocalDate.parse("2014-02-23");
AbstractTaskDao abstratTaskDao = Mockito.mock(AbstractTaskDao .class, Mockito.CALLS_REAL_METHODS);
System.out.println("\n\t sql-"+abstratTaskDao.getQuery());
abstratTaskDao.addTask(myqueue,tdate);
}
}
上面的测试用例在行“((JdbcTemplate)JdbcTemplate.getjdbcoperations()).setFetchSize(1000);”处抛出NullPointerException
第二件事是@autowired字段,这里是jdbcTemplate正在变为null,那么我将如何获得它的值。
更新:我得到了代码“((JdbcTemplate)JdbcTemplate.getjdbcoperations()).SetFetchSize(1000);”的类强制转换异常因为jdbcTemplate名为ParameterJdbcTemplate。如何解决这个问题。
To solve this issue I added below line to code in AbstractTaskDaoTest class.
@Mock JdbcTemplate jdbcTemp;
jdbcTemp=mock(JdbcTemplate.class);
when(jdbcTemplate.getJdbcOperations()).thenReturn(jdbcTemp);
尝试这段代码,我还没有完全编译,所以你需要找出最后一行。
@Test
public void testTask() throws InterruptedException {
//arrange
LocalDate tdate = LocalDate.parse("2014-02-23");
AbstractTaskDao abstratTaskDao = Mockito.mock(AbstractTaskDao.class, Mockito.CALLS_REAL_METHODS);
NamedParameterJdbcTemplate jdbcTemplate = Mockito.mock(NamedParameterJdbcTemplate.class);
JdbcOperations operations = Mockito.mock(JdbcOperations.class);
when(jdbcTemplate.getJdbcOperations()).thenReturn(operations);
when(abstratTaskDao.getQuery()).thenReturn("select * from dual");
//use reflection to inject autowired field.
org.springframework.test.util.ReflectionTestUtils.setField(abstratTaskDao, "jdbcTemplate", jdbcTemplate);
System.out.println("\n\t sql-"+abstratTaskDao.getQuery());
//act
abstratTaskDao.addTask(myqueue, tdate);
//assert
verify(jdbcTemplate).query(...);
}
我是Javascript新手,我正试图从包含多个对象的数组中获取id键的值。 通过 for..在循环中,我需要对象的id - 如1,2或3 - 与不同的值进行比较。 我试着这样做: 但是,我这样做了,删除Id值返回未定义。 我想不通为什么返回未定义,我无法解决这个问题。 我希望我能很好地表达自己,对不起我的英语不好。
当我调试测试方法时,我看到变量是从文件中读取的。但是,在方法中,我看到变量是null。如何设置变量,以便在尝试测试此方法时在方法中可用?
问题内容: 我有以下注释。 MyAnnotation.java SomeAspect.java SomeOther.java 在上面的课中, @MyAnnotation中* 传递了“ ABC ” 。现在如何在 SomeAspect.java 类的 处理 方法中访问“ ABC ”值? *** 谢谢! 问题答案: 您可以从ProceedingJoinPoint获取签名,如果方法调用,只需将其转换为Me
大家好,我对java很陌生,还在学习OOP原理。直接回答问题。所以我有一个抽象类和两个继承自它的类。看起来是这样的: 现在我做到了: 在这一点上,我想做或(当然不是两者都做,因为我创建了一个孩子),但我两者都不能做。
我有一个php对象,我想从中获取一些值 这就是我所拥有的: 如何获得变量中title的值?
这是我从MPI ELAN获得的数据,它是该程序中使用的关于电影的文件: 我想从这个键中提取值:“TIME\u ORIGIN”:“82199”,我认为这是JSON数组,但我做不到。