私はテストケースにこだわっていて、エラーが"実際にはこのモックとの相互作用はありませんでした。Mockitoテストに失敗しました:実際には、このモックとの相互作用はゼロでした
私はCRUD操作を行っているDao Implementationクラスを作成しました。
public class EmployeeDaoImpl implements EmployeeDao {
@Override
public void saveEmployee(EmployeeDetails employee) {
Session session = HibernateUtil.getSessionFactory().openSession();
Transaction transaction = session.beginTransaction();
session.save(employee);
transaction.commit();
session.close();
}
}
このクラスでは、私はMockitoを使用してテストを構築しています。だから私の上記saveEmployeeメソッドのセッション、TRansaction私はモックオブジェクトとしてそれを作ったとセッション、を保存すると同様にセッションを確認する必要があります。
だから私は書かれている以下のMockitoコード:私は、コードをデバッグしていると、コードはすべて私のIDEでブレークポイントと上に渡している
/** * */
package sandeep.test;
import static org.junit.Assert.*;
import javax.transaction.HeuristicMixedException;
import javax.transaction.HeuristicRollbackException;
import javax.transaction.RollbackException;
import javax.transaction.SystemException;
import javax.transaction.Transaction;
import junit.framework.Assert;
import org.hibernate.Session;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.runners.MockitoJUnitRunner;
import sandeep.DAO.EmployeeDao;
import sandeep.DAOImpl.EmployeeDaoImpl;
import sandeep.DAOImpl.HibernateUtil;
import sandeep.pojo.EmployeeDetails;
import static org.mockito.Mockito.*;
/**
* @author sandeep
*
*/
@RunWith(MockitoJUnitRunner.class)
public class EmployeeDaoImplTest {
@Mock
EmployeeDetails edt;
@Mock
Session session ;
@Mock
Transaction transaction;
@InjectMocks
EmployeeDaoImpl edi = new EmployeeDaoImpl();
@Before
public void setUp() throws Exception {
//eimpl = new EmployeeDaoImpl();
//emp= mock(EmployeeDao.class);
}
@After
public void tearDown() throws Exception {
}
@Test
public void testSaveEmployee(){
edi.saveEmployee(getEmployeeDetails());
// But here i am getting the error as zero interactions
verify(session, times(1)).save(EmployeeDetails.class);
}
public EmployeeDetails getEmployeeDetails(){
edt = new EmployeeDetails();
edt.setEname("sandeep");
edt.setId(2);
edt.setEnumber("hoi");
return edt;
}
}
この3つの値を実行すると、データベースに追加されますが、ゼロの対話が存在するため、テストケースが失敗します。
私に説明していただきありがとうございますが、私はこれをやろうとするトランザクションを追加する必要があります。もう1つはここにありますHibernateUtil.getSessionFactory()。openSession();静的で、私は私が使用することができないと思うMockito私は@ luc14n0 –
@SandeepVを使用することができます任意のメソッドを使用して静的メソッドを模擬するPowerMockitoライブラリを探索することができます –