集成测试问题有关插入数据库



我是测试的新手,我现在正在使用集成测试。

我正在编写此代码,以在数据库中插入一个新条目,并在数组之前和之后测试。但是由于某种原因,它似乎返回false,我不确定我是否正在做正确的事情:

这是Junit类:

public class TestJunit {
private Question question;
private QuestionDAO questionDaoMock;
protected void setUp(){
    question = new Question();
    questionDaoMock = mock(QuestionDAO.class);  
    question.setQuestiondao(questionDaoMock);
}
@Test
public void testAdd() {
    questionDaoMock.openCurrentSessionwithTransaction();
    List<Question> currentQuestions = new ArrayList<Question>();
    currentQuestions = questionDaoMock.findAll();
    question.setChapterId(64);
    question.setText("Rezultatul calculului 54*2-76:2 este...");
    questionDaoMock.persist(question);
    currentQuestions.add(question);
    List<Question> newQuestions = new ArrayList<Question>();
    newQuestions = questionDaoMock.findAll();
    questionDaoMock.closeCurrentSessionwithTransaction();
    assertEquals(currentQuestions.size(), newQuestions.size());
}
}

这是我的测试人员:

public class TestRunner {
   public static void main(String[] args) {
  Result result = JUnitCore.runClasses(TestJunit.class);
  for (Failure failure : result.getFailures()) {
     System.out.println(failure.toString());
  }
  System.out.println(result.wasSuccessful());
   }
}   

我已经在主函数中分别尝试了Testadd((函数中的代码,只是检查插入是否有效并且可以。我比较了数组尺寸,当我从主方法运行时,它也可以工作。我在做什么错?

设置方法中应该有一个@before注释,else junit不会在执行testadd((方法之前运行setup((方法。

模拟不应为您提供行为。您需要自己做。例如:

questionDaoMock = Mockito.mock(QuestionDAO.class); 
Mockito.when(questionDaoMock.findAll()).thenReturn(Collections.emptyList());

现在,当您的代码调用方法questionDaoMock.findAll() -Mockito返回为您返回空列表。

我认为您需要在此测试中使用Questiondao的真实实例。

问题似乎是嘲笑DAO类。我在做对吗?它实际上是在findAll()方法之后返回一个空数组(我确定它可以工作(

相关内容

  • 没有找到相关文章

最新更新