Tag: mockito

模拟java.time.format.DateTimeFormatter类

我正在尝试模拟DateTimeFormatter类。 我做了以下事情: @RunWith(PowerMockRunner.class) @PrepareForTest({DateTimeFormatter.class}) public class UnitTest { private DateTimeFormatter mockDateFormatter; private AwesomeClass awesomeClass; @Before public void setUp() { mockDateFormatter = PowerMockito.mock(DateTimeFormatter.class); awesomeClass = new AwesomeClass(mockDateFormatter); } @Test public void shouldToTestSomethingAwesome() { // Other test code PowerMockito.when(mockDateFormatter.format(any(LocalDate.class))) .thenReturn(“20150224”); // Other test code } AwesomeClass使用它来格式化LocalDateTime.now(ZoneId.of(“UTC”)); 。 然后,格式化的字符串进一步用于生成另一个字符串。 我需要确保正确生成字符串。 所以我需要从格式化程序返回一致日期或模拟LocalDateTime.now(..)静态方法 我究竟做错了什么?

模拟对象使用Mockito调用final类静态方法

我刚刚开始模拟我们应用程序的不同层。 当我调用最终类静态方法时,我的一个模拟对象返回NPE。 有没有解决的办法? 例如 when(mockObject.someMethod(FinalClass.staticMethod(someParam)).anotherMethodCall) .thenReturn(“someString”);

Powermock – java.lang.IllegalStateException:无法转换类

描述: 我试图从类中测试静态方法。 我使用powerMock(1.6.2)+ mockito(1.10.19)与Junit4(4.12)和java8一起进行模拟。 问题: 获取错误:“无法转换名为com.gs.ops.domain.StaticClass的类原因:java.io.IOException:无效的常量类型:18” 解决方案: 谷歌搜索线程与powermock问题 – mockito和java-8 从powermock中排除了java协助,并添加了java协助3.19.0-GA 试过不同版本的powermock(1.5.4,1.6.2 ……) 下面是exception堆栈跟踪: java.lang.IllegalStateException: Failed to transform class with name com.StaticClass. Reason: java.io.IOException: invalid constant type: 18 at org.powermock.core.classloader.MockClassLoader.loadMockClass(MockClassLoader.java:266) at org.powermock.core.classloader.MockClassLoader.loadModifiedClass(MockClassLoader.java:180) at org.powermock.core.classloader.DeferSupportingClassLoader.loadClass(DeferSupportingClassLoader.java:68) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:340) at org.powermock.modules.junit4.common.internal.impl.JUnit4TestSuiteChunkerImpl.createDelegatorFromClassloader(JUnit4TestSuiteChunkerImpl.java:145) at org.powermock.modules.junit4.common.internal.impl.JUnit4TestSuiteChunkerImpl.createDelegatorFromClassloader(JUnit4TestSuiteChunkerImpl.java:40) at org.powermock.tests.utils.impl.AbstractTestSuiteChunkerImpl.createTestDelegators(AbstractTestSuiteChunkerImpl.java:244) at org.powermock.modules.junit4.common.internal.impl.JUnit4TestSuiteChunkerImpl.(JUnit4TestSuiteChunkerImpl.java:61) at org.powermock.modules.junit4.common.internal.impl.AbstractCommonPowerMockRunner.(AbstractCommonPowerMockRunner.java:32) at org.powermock.modules.junit4.PowerMockRunner.(PowerMockRunner.java:34) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native […]

Mockito:如何模拟JodaTime的界面

我使用JodaTime#DateTime ,我需要模拟它的行为。 由于无法直接模拟JodaTime#DateTime ,因此我创建了它的接口 Clock.java public interface Clock { DateTime getCurrentDateTimeEST(); DateTime getFourPM_EST(); DateTime getSevenPM_EST(); } JodaTime.java public class JodaTime implements Clock { @Override public DateTime getCurrentDateTimeEST() { return new DateTime(DateTimeZone.forID(“EST”)); } @Override public DateTime getFourPM_EST() { DateTime current = getCurrentDateTimeEST(); return new DateTime(current.getYear(), current.getMonthOfYear(), current.getDayOfMonth(), 16, 0, 0, 0, DateTimeZone.forID(“EST”)); } @Override public DateTime […]

如何在JUnit5中使用Mockito

如何使用Mockito和JUnit 5进样? 在JUnit4中,我可以使用@RunWith(MockitoJUnitRunner.class) Annotation。 在JUnit5中没有@RunWith Annotation?

是否可以在PowerMock中对私有静态方法使用部分模拟?

从PowerMock主页上的示例中,我看到以下示例,用于部分模拟Mockito的私有方法: @RunWith(PowerMockRunner.class) // We prepare PartialMockClass for test because it’s final or we need to mock private or static methods @PrepareForTest(PartialMockClass.class) public class YourTestCase { @Test public void privatePartialMockingWithPowerMock() { PartialMockClass classUnderTest = PowerMockito.spy(new PartialMockClass()); // use PowerMockito to set up your expectation PowerMockito.doReturn(value).when(classUnderTest, “methodToMock”, “parameter1”); // execute your test classUnderTest.execute(); // Use PowerMockito.verify() to […]

Mockito的Matcher vs Hamcrest Matcher?

这将是一个简单的,但我找不到它们和使用哪一个,如果我有两个lib包含在我的类路径中?

如何使用在mockito中调用之间更改状态的相同参数来validation相同模拟方法的调用?

我有以下代码进行unit testing: public void foo() { Entity entity = //… persistence.save(entity); entity.setDate(new Date()); persistence.save(entity); } 我想validation在第一次调用persistence.save entity.getDate()返回null 。 因此,我无法使用Mockito.verify(/*…*/)因为那时方法foo已经完成,并且entity.setDate(Date) 。 所以我认为我需要在调用发生时对调用进行validation。 我如何使用Mockito做到这一点?

如何编写一个与某事不相等的匹配器

我正在尝试为通话创建一个模拟器。 说我有这个方法我试图删除: class ClassA { public String getString(String a) { return a + “hey”; } } 我想嘲笑的是:第一个例子是 when(classA.getString(eq(“a”)).thenReturn(…);` 在同一测试案例中 when(classA.getString([anything that is not a])).thenReturn(somethingelse); anyString()情况是我的问题:我如何匹配除“a”之外的anyString() ?

mockito test在运行junit test时没有给出这样的方法错误,但是当在运行配置中手动添加jar时,它运行良好

我一直面临着一个特殊的问题。 基本上,当我正常运行我的Mockito / PowerMockito测试,即’Run as Junit Test’时,它会给我以下错误: java.lang.NoSuchMethodError: org.mockito.mock.MockCreationSettings.isUsingConstructor()Z at org.mockito.internal.creation.instance.InstantiatorProvider.getInstantiator(InstantiatorProvider.java:10) at org.powermock.api.mockito.internal.mockcreation.MockCreator.createMethodInvocationControl(MockCreator.java:110) at org.powermock.api.mockito.internal.mockcreation.MockCreator.mock(MockCreator.java:58) at org.powermock.api.mockito.PowerMockito.mock(PowerMockito.java:203) at org.powermock.api.extension.listener.AnnotationEnabler.standardInject(AnnotationEnabler.java:106) at org.powermock.api.extension.listener.AnnotationEnabler.beforeTestMethod(AnnotationEnabler.java:54) at org.powermock.tests.utils.impl.PowerMockTestNotifierImpl.notifyBeforeTestMethod(PowerMockTestNotifierImpl.java:90) at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$PowerMockJUnit44MethodRunner.executeTest(PowerMockJUnit44RunnerDelegateImpl.java:292) at org.powermock.modules.junit4.internal.impl.PowerMockJUnit47RunnerDelegateImpl$PowerMockJUnit47MethodRunner.executeTestInSuper(PowerMockJUnit47RunnerDelegateImpl.java:127) at org.powermock.modules.junit4.internal.impl.PowerMockJUnit47RunnerDelegateImpl$PowerMockJUnit47MethodRunner.executeTest(PowerMockJUnit47RunnerDelegateImpl.java:82) at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$PowerMockJUnit44MethodRunner.runBeforesThenTestThenAfters(PowerMockJUnit44RunnerDelegateImpl.java:282) at org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:86) at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:49) at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.invokeTestMethod(PowerMockJUnit44RunnerDelegateImpl.java:207) at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.runMethods(PowerMockJUnit44RunnerDelegateImpl.java:146) at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$1.run(PowerMockJUnit44RunnerDelegateImpl.java:120) at org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:33) at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:45) at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.run(PowerMockJUnit44RunnerDelegateImpl.java:122) at org.powermock.modules.junit4.common.internal.impl.JUnit4TestSuiteChunkerImpl.run(JUnit4TestSuiteChunkerImpl.java:106) at org.powermock.modules.junit4.common.internal.impl.AbstractCommonPowerMockRunner.run(AbstractCommonPowerMockRunner.java:53) at org.powermock.modules.junit4.PowerMockRunner.run(PowerMockRunner.java:59) at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50) […]