Tag: mocking

我如何unit testingHTTPServlet?

我想用http://www.easymock.org/测试我的servlet 如何编写unit testing代码? 我用你的回复更新我的代码。 我刚刚使用Google并制作了此代码。 这是我的Servlet: package com.i4ware.plugin.timesheet; import java.io.IOException; import com.atlassian.jira.issue.Issue; import com.atlassian.jira.issue.IssueManager; import com.atlassian.jira.project.Project; import com.atlassian.jira.project.ProjectManager; import org.ofbiz.core.entity.DelegatorInterface; import org.ofbiz.core.entity.EntityExpr; import org.ofbiz.core.entity.EntityOperator; import org.ofbiz.core.entity.GenericEntityException; import org.ofbiz.core.entity.GenericValue; import org.ofbiz.core.util.UtilMisc; import org.apache.commons.lang.StringEscapeUtils; import com.atlassian.crowd.embedded.api.User; import com.atlassian.jira.security.JiraAuthenticationContext; import com.atlassian.jira.web.bean.PagerFilter; import com.atlassian.jira.issue.search.SearchResults; import com.atlassian.jira.bc.issue.search.SearchService; import com.atlassian.jira.issue.search.SearchException; import com.atlassian.jira.issue.worklog.Worklog; import com.atlassian.jira.issue.worklog.WorklogManager; import com.atlassian.jira.issue.worklog.WorklogImpl; import com.atlassian.query.Query; import com.atlassian.jira.jql.builder.JqlQueryBuilder; import […]

EasyMock:在java中模拟一个构造函数调用

我在这个板上看了类似的问题,但没有一个回答我的问题。 这听起来很奇怪,但是可以在你正在嘲笑的对象上模拟一个构造函数调用。 例: class RealGuy { …. public void someMethod(Customer customer) { Customer customer = new Customer(145); } } class MyUnitTest() { public Customer customerMock = createMock(Customer.class) public void test1() { //i can inject the mock object, but it’s still calling the constuctor realGuyobj.someMethod(customerMock); //the constructor call for constructor makes database connections, and such. } […]

Spring-Test-MVC / MockServletContext – 测试中的内容为空,但是在Tomcat上工作

我们正在尝试为Spring-MVC Web应用程序设置Spring-Test-MVC。 我们开始使用freemarker,一切都很好。 我们决定反对它,现在正试图用JSP进行设置。 当测试应用程序部署在Tomcat上时,它正在运行。 当我们运行简单测试时: @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(loader = WebContextLoader.class, locations = { “file:src/main/webapp/WEB-INF/servlet-context.xml” }) public class SkelletonTest { @Inject private MockMvc mockMvc; @Test public void homeTest() throws Exception { mockMvc.perform(get(“/”)).andExpect(status().isOk()) .andExpect(content().type(“text/html;charset=ISO-8859-1”)) .andExpect(content().string(containsString(“Hello World!”))); } 它说: content type not set或如果删除,内容将为空。 然而,控制器将被调用,因此映射必须起作用。 所以这强烈暗示我们的测试没有呈现视图,但我不知道我可能缺少什么设置。 这是我们的servlet-context.xml: WebContextLoader: public class WebContextLoader extends GenericWebContextLoader { public WebContextLoader() { super(“src/main/webapp”, false); […]

如何使用Java 5和6来存根/模拟JDBC ResultSet?

我正在测试一些使用JDBC语句等的类,现在我遇到了JDBC ResultSet接口的问题: 该软件应该与Java 5和Java 6一起运行,因此测试也应该与两个版本一起运行。 不幸的是,Java 6引入了一堆新方法(这仍然不是什么大问题),它返回了一堆新的类/接口,这使事情变得更加困难。 (参见Frank Carver的Punch Barrel -例如Java 6打破了JDBC ) 在找出这些版本差异之前,我考虑了在存根和模拟之间并最终使用了存根,因为ResultSet具有内部状态(当前行处理),这对我来说更自然地使用存根,如下所示: public class StubResultSet implements ResultSet { private Object[][] data; private int currentRow = -1; private boolean closed = false; public StubResultSet(Object[][] data) { this.data = data; } public Object getObject(int columnIndex) throws SQLException { checkClosed(); return data[currentRow][columnIndex]; } public String getString(int […]

模拟基于reflection的调用

我试图模拟一些基于reflection的方法。 下面你可以看到细节, 被测试的class级 public class TracerLog { @AroundInvoke public Object logCall(InvocationContext context) throws Exception { Logger logger = new Logger(); String message = “INFO: Invoking method – ” + context.getMethod().getName() + “() of Class – ” + context.getMethod().getDeclaringClass(); logger.write(message); return context.proceed(); } } 测试 public class TracerLogTest { @Mock InvocationContext mockContext; @Mock Logger mockLogger; @InjectMocks […]

使用Mockito在方法调用上拦截对象

我有一个类似于void方法的模拟类 public class Mock { public void method(String string) { // doSomething } } 我不关心这个方法做什么,但我想得到String发送。 这个String实际上是一个JSON格式的对象,我正在测试的方法是根据最初发送的字符串修改这个对象(很随意吧)。 method(String json) { Object obj = unparse(json); obj.setRandomValue(random); String parsed = parse(obj); Mock.method(parsed); } 我想看看之前为null的“randomValue”是否实际上是在方法调用之后随机设置的。 最好的方法是拦截json,解析它并检查对象。

Mockito间谍 – 在调用构造函数之前存根

我正在试图窥探一个Object,我想在构造函数调用它之前存根一个由构造函数调用的方法。 我的class级看起来像这样: public class MyClass { public MyClass() { setup(); } public void setup() { } } 不得调用安装方法。 那么,我如何监视这个方法(和存根设置,使它什么都不做)? 它可以很好地模拟方法,但我想unit testingMyClass ,所以我需要非常其他的方法。 之所以需要存根设置方法以便它什么都不做: 我正在编写一个Lego机器人(lejos),我在机器人需要工作的设置中放了一些代码。 但是,当我在TinyVM(安装在机器人上的VM)之外调用它时,java崩溃,因为VM尚未正确初始化(因为测试在我的PC上运行)。 对于unit testing,设置并不重要。 我不能存根类/方法设置调用,因为它们中的一些是公共静态最终变量。

使用Mockito模拟Apache HTTPClient

我正在尝试模拟Apache HttpClient接口,以便模拟下面提到的一个方法来返回一个存根的JSON对象作为响应。 HttpResponse response = defaultHttpClient.execute(postRequest); 有人可以通过一些示例代码建议如何实现这一目标吗? 非常感谢您的帮助。 谢谢

使用数据填充ResultSet的简便方法

我想模拟一个ResultSet。 认真。 我正在重构一个从ResultSet中解析数据的大型复杂代码,我希望我的代码行为相同。 因此,我需要为重构的部分编写一个unit testing,以便能够对此进行测试。 谷歌搜索后,我想出了两个想法: 使用EasyMock,编写looooong模拟序列。 非常糟糕的解决方案:难以添加初始数据,难以更改数据,大测试调试的好处。 使用Apache Derby或HSQLDB创建内存数据库,从文件或String数组填充它,查询一些神奇的InMemoryDBUtils.query(sql)。 然后使用该ResultSet。 不幸的是,我没有找到任何神奇的InMemoryDBUtils来快速编写测试:-)。 IBM的文章“使用Derby进行持久性的隔离unit testing”似乎对我需要的东西很好,尽管…… 第二种方法看起来更容易,也更容易支持。 你有什么建议创建这样的模拟? (尽管医生,当然:-)? 我错了眉毛一些银弹吗? 可能,DBUnit是这个的工具吗?

使用Mockito模拟JdbcTemplate的DataSource

我正在尝试在Spring项目中测试一个类。 我想在测试类和dao类中进行尽可能多的更改,这样我就不必因为更改而重新测试所有类型的东西。 我正在使用的类有一个JdbcTemplate template类变量,该变量由以下实例化: setJdbcTemplate(DataSource dataSource) { this.template = new JdbcTemplate(dataSource); } 我想测试的方法使template.query()运行定义的SQL查询并将结果返回到列表。 我在我的测试用例中创建了以下内容,但我不确定如何使用它。 我可以使用Mockito使以下代码返回某个字符串列表吗? DataSource mockedDataSrc = Mockito.mock(DataSource.class); customerClassDao.setJdbcTemplate(mockedDataSrc); 我可以以某种方式使用when或another命令来设置我想要返回到JdbcTemplate的.query调用的内容吗?