Tag: mockito

的Mockito。 validation方法参数是一个特殊的类

我有一个方法: void putObject( param) 有一些测试,我嘲笑这个方法,但我想知道,如何validation该方法是否使用特定类的参数调用? 试图以这样的方式做到: verify(foo).putObject((SomeClass)anyObject()); —— verify(foo).putObject(any(SomeClass.class)); —— ArgumentCaptor parameter = ArgumentCaptor .forClass(SomeClass.class); verify(foo).putObject(parametr); 只使用any()的第二个变量,但它不t check class of参数t check class of 。 那么如果可以validation该方法是否获得特定类的任何对象?

Mockito不能嘲笑这门课

我试图嘲笑一个公共课,但是当这样做时,Mockito抛出一个Mockito cannot mock this classexception。 我想要模拟的类: https : //github.com/scribejava/scribejava/blob/master/scribejava-core/src/main/java/com/github/scribejava/core/builder/ServiceBuilder.java 测试代码: package xyz.jacobclark.adapter; import com.github.scribejava.apis.TwitterApi; import com.github.scribejava.core.builder.ServiceBuilder; import com.github.scribejava.core.model.OAuth1RequestToken; import com.github.scribejava.core.oauth.OAuth10aService; import org.junit.Assert; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.junit.MockitoJUnitRunner; import java.io.IOException; import static org.hamcrest.Matchers.is; import static org.hamcrest.core.IsInstanceOf.any; @RunWith(MockitoJUnitRunner.class) public class TwitterOAuthAdapterTest { @Mock ServiceBuilder serviceBuilder; @Test public void getRequestTokenShouldReturnAValidRequestToken() throws IOException { class TwitterOAuthAdapter […]

如何模拟JdbcTemplate.queryForObject()方法

我的方法看起来像这样: public class Decompile extends JdbcDaoSupport public void getRunner(){ String val = this.getJdbcTemplate().queryForObject(sql,String.class, new Object[]{1001}); } } 请建议我如何嘲笑这个。

如何模拟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(); } } […]

如何模拟从抽象类inheritance的受保护子类方法?

如何使用Mockito或PowerMock来模拟由子类实现但从抽象超类inheritance的受保护方法? 换句话说,我想在模拟“doSomethingElse”时测试“doSomething”方法。 抽象超级 public abstract class TypeA { public void doSomething() { // Calls for subclass behavior doSomethingElse(); } protected abstract String doSomethingElse(); } 子类实现 public class TypeB extends TypeA { @Override protected String doSomethingElse() { return “this method needs to be mocked”; } } 解 这里给出的答案是正确的,如果涉及的类在同一个包中,它们将起作用。 但如果涉及不同的包,则可以选择使用PowerMock。 以下示例适用于我。 当然可能有其他方法可以做到这一点,这是有效的。 import static org.junit.Assert.assertEquals; import org.junit.Test; […]

如何让Mockito模拟按顺序执行不同的操作?

以下代码: ObjectMapper mapper = Mockito.mock(ObjectMapper.class); Mockito.doThrow(new IOException()).when(mapper).writeValue((OutputStream) Matchers.anyObject(), Matchers.anyObject()); Mockito.doNothing().when(mapper).writeValue((OutputStream) Matchers.anyObject(), Matchers.anyObject()); try { mapper.writeValue(new ByteArrayOutputStream(), new Object()); } catch (Exception e) { System.out.println(“EXCEPTION”); } try { mapper.writeValue(new ByteArrayOutputStream(), new Object()); } catch (Exception e) { System.out.println(“EXCEPTION”); } 预期的产出是 例外 对? 但我一无所获 如果我在doNothing之后做了doThrow我得到了 例外 例外 所以它看起来像是最后一个被嘲笑的模拟……我认为它会按照它们注册的顺序进行模拟吗? 我想制作一个模拟第一次抛出exception,第二次正常完成…

我可以用Mockito / Powermock模拟一个超类的构造函数吗?

是否可以使用Mockito和可选的Powermock来模拟超类S ,以便对超类S任何调用(包括对S()构造函数的调用)都被模拟? 所以使用下面的例子,如果我使用MockS用MockS替换S , MockS对super()的调用是否会使用MockS中的构造MockS ? class S { S() { // Format user’s hard drive, call 911, and initiate self-destruct } } class T extends S { T() { super(); } } class Test { @Mock private S mockS; new T(); // T’s call to super() should call the mock, not the destructive S. […]

Mockito在一个简单的测试中抛出一个OutOfMemoryError

我尝试使用Mockito来模拟数据库池(仅用于检索数据),但是当运行在一段时间内检索到许多模拟连接的性能测试时,它会耗尽内存。 这是一个简化的自包含代码,它在我的机器上进行大约150,000次循环迭代后抛出OutOfMemoryError(尽管似乎没有任何东西可以全局保存,并且所有东西都应该是垃圾可收集的)。 我究竟做错了什么? import static org.mockito.Mockito.when; import java.sql.Connection; import org.mockito.Mock; import org.mockito.MockitoAnnotations; public class Test1 { static class DbPool { public Connection getConnection() {return null;} } @Mock private DbPool dbPool; @Mock private Connection connection; public Test1() { MockitoAnnotations.initMocks(this); when(dbPool.getConnection()).thenReturn(connection); for(int i=0;i<1000000;i++) { dbPool.getConnection(); System.out.println(i); } } public static void main(String s[]) { new Test1(); } […]

如何在对模拟的不同调用中返回不同的值?

我有以下代码从DB获取当前计数器值。 然后它更新DB中的计数器,然后再次检索该值。 int current = DBUtil.getCurrentCount(); DBUtil.updateCount(50);// it updates the current count by adding 50 int latest = DBUtil.getCurrentCount(); 我想以这样的方式模拟静态方法,即第一个调用应返回100,第二个调用应返回150.如何使用PowerMockito实现此目的? 我正在使用TestNG,Mockito和PowerMock。

JUnit测试AspectJ

我正在尝试为Custom Aspect编写Junit测试。 这是Aspect Class Snippet: @Aspect @Component public class SampleAspect { private static Logger log = LoggerFactory.getLogger(SampleAspect.class); @Around(“execution(* org.springframework.data.mongodb.core.MongoOperations.*(..)) || execution(* org.springframework.web.client.RestOperations.*(..))”) public Object intercept(final ProceedingJoinPoint point) throws Throwable { logger.info(“invoked Cutom aspect”); return point.proceed(); } } 因此,只要关节点与切入点匹配,上述方面就会截获。 它的工作正常。 但我的问题是如何对该类进行unit testing。 我有以下Junit测试: @Test(expected = MongoTimeoutException.class) public void TestWithMongoTemplate() { //MongoDocument class TestDocument test = new […]