Tag: mocking

在JMockit中模拟测试类的私有方法

在我的测试类(CUT) – 一个ejb – 我有一个私有方法“getConnection”。 我想测试CUT的另一种方法,但这种方法会先失败。 我尝试过如下所示,但“调用”是错误的。 我不想调用该方法,我想将其存根。 但是怎么样? (’连接’是存根) new NonStrictExpectations() { { invoke(archivingBean, “getConnection”);result = connection; } }; archivingBean.moveCreditBasic2Archive(new Date());

模拟对象创建内部方法测试中

我有一个我想测试的类。只要有可能,我会依赖于其他类的对象对该类进行dependency injection。但是,我遇到了一个案例,我想在没有重构代码的情况下模拟对象而不是申请DI。 这是被测试的课程: public class Dealer { public int show(CarListClass car){ Print print=new Print(); List list=new LinkedList(); list=car.getList(); System.out.println(“Size of car list :”+list.size()); int printedLines=car.printDelegate(print); System.out.println(“Num of lines printed”+printedLines); return num; } } 我的测试类是: public class Tester { Dealer dealer; CarListClass car=mock(CarListClass.class); List carTest; Print print=mock(Print.class); @Before public void setUp() throws Exception { dealer=new Dealer(); […]

Mockito有局部变量

我有一个返回String的简单方法。 它还会创建一个本地List 。 我想测试添加到本地List的值。 这是一个例子 package com.impl; import java.util.ArrayList; import java.util.List; import com.test.domain.CustomerVo; public class ClassImpl { public String assignGift(CustomerVo customerVo) { List listOfGift = new ArrayList(); if (customerVo.getName().equals(“Joe”)) { listOfGift.add(“ball”); } else if ((customerVo.getName().equals(“Terry”))) { listOfGift.add(“car”); } else if (customerVo.getName().equals(“Merry”)) { listOfGift.add(“tv”); }else { listOfGift.add(“no gift”); } return “dummyString”; } } 当customerVo.getName.equals(“Terry”) , car被添加到本地List时,如何测试。

JUnit与Mockito,EasyMock等嘲笑

我正在尝试在我正在测试的类中模拟一个对象的方法。 例如 class ClassToTest { public doSomething () { SomeObject a = new SomeObject (); a.doSomethingElse (); } } 有没有办法模拟变量“a”的方法? 我想doSomethingElse在测试期间什么都不做。 我目前正在使用Mockito,但我对任何模拟框架持开放态度。 谢谢

如何模拟私有内部类

我有一个spring应用程序,我想在像这样的控制器上创建一个单一的测试。 问题是Wrapper类是一个私有内部类,因此在测试中不了解Wrapper。 是否可以在不更改控制器类的情况下使用Mockito进行模拟。 我可以使用prepareData()来获取对象的实例,但我不知道是否可以使用它来模拟该对象。 谢谢 @Controller public class Controller { private class Wrapper { private Object1 field1; private Object2 field2; private Object1 method1(){ … } private Object2 method1(){ … } } @ModelAttribute(“data”) public Wrapper prepareData() { return new Wrapper (); } public String save(@ModelAttribute(“data”) Wrapper wrapper, BindingResult result, Model model){ … } } 所以在我的测试中我会有类似的东西 @Test […]

模拟CGLIB增强对象

mockito无法模拟CGLIB已经增强的对象吗? public class Article { @Autowired private dbRequestHandler @Autowired private filesystemRequestHandler @Transactional public ArticleDTO getArticleContents() { //extractText() and then save the data in DTO //extractImages() and then save the data in DTO // some other calls to other databases to save data in dto return articleDTO; } public void extractText() { //call to DB } […]

有哪些方法可以测试依赖于静态方法的方法?

我需要测试一些依赖于Spring Security的安全相关类。 此代码使用静态的SecurityContextHolder.getContext() 。 如何在不设置整个安全上下文的情况下测试调用方法? 我们正在使用JUnit 4和Mockito。 Mockito在常见问题解答中非常清楚,静态方法不受支持。 还有其他选择吗? Spring Security案例的答案很好,但我正在寻找更普遍问题的解决方案。

模拟时junit出错

我是Junit的新手,下面是我正在运行的junit代码。 package com.de.base.util.general; import static org.junit.Assert.*; import static org.mockito.Mockito.when; import java.util.HashMap; import org.junit.Assert; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; import org.powermock.api.mockito.PowerMockito; @RunWith(MockitoJUnitRunner.class) public class JReportUtilTest { @InjectMocks ReportUtil w_res = new ReportUtil(); @Mock CollectionUtil w_util; @Test public void test_removeHashedSettings() throws Exception { HashMap w_abc = new HashMap(); w_abc.put(“abc”,”89″); //CollectionUtil mock = […]

如何模拟超级引用(超类)?

有时当我编写unit testing时,我应该模拟对超类的引用。 我读过这个问题: 问题 这个答案回答DI建议重构代码。 但我不能 如果超类方法足够大,这个答案另一个答案是不合适的。 在我的情况下,我有非常大的代码。 是的我知道它是SOLID OOD原则,但我应该写测试。 我没有足够的时间进行重构。 4年前问了这个问题! 目前Mockito或Powermock可以解决此问题吗? 更新 代码示例: class BaseService { public void save() { // a lot of code here! I cannot change this code. } } public Childservice extends BaseService { public void save(){ //logic for testing super.save(); //logic for testing } } 更新2 public class […]

如何模拟DriverManager.getConnection(…)?

我有一个类,它连接到H2数据库并运行几个SQL语句。 public class H2Persistence implements IPersistence { private Connection conn; @Override public void open() { try { Class.forName(“org.h2.Driver”); conn = DriverManager.getConnection(CONN_TYPE_USER_HOME); final Statement stmt = conn.createStatement(); stmt.executeUpdate(“CREATE TABLE PERSON(” + “ID BIGINT,”+ “AGEGROUP VARCHAR(255),”+ “MONTHLY_INCOME_LEVEL VARCHAR(255),” + “GENDER VARCHAR(1),”+ “HOUSEHOLD_ID BIGINT)”); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } } […]