Tag: powermock

java.lang.LinkageError:ClassCastException

我确实遇到过TestNG和RESTeasy的一个非常烦人的问题。 我有一个类,它针对一个使用RESTeasy框架公开自身的API类运行多个测试。 但是,如果我让测试运行maven(mvn test),那么我得到以下exception: java.lang.LinkageError: ClassCastException: attempting to castjar:file:/C:/Users/rit/.m2/repository/org/jboss/resteasy/jaxrs-api/2.3.0.GA/jaxrs-api-2.3.0.GA.jar!/javax/ws/rs/ext/RuntimeDelegate.classtojar:file:/C:/Users/rit/.m2/repository/org/jboss/resteasy/jaxrs-api/2.3.0.GA/jaxrs-api-2.3.0.GA.jar!/javax/ws/rs/ext/RuntimeDelegate.class at javax.ws.rs.ext.RuntimeDelegate.findDelegate(RuntimeDelegate.java:126) at javax.ws.rs.ext.RuntimeDelegate.getInstance(RuntimeDelegate.java:96) at javax.ws.rs.core.Response$ResponseBuilder.newInstance(Response.java:394) at javax.ws.rs.core.Response.status(Response.java:116) at javax.ws.rs.core.Response.status(Response.java:130) at com.pd.api.TokenAPI_V1.validateAccessToken(TokenAPI_V1.java:141) at com.test.pd.api.TokenAPI_V1Test.testIfValidAccessTokenReturnsCorrectHTTPHeadersWhenTokenIsNotFound(TokenAPI_V1Test.java:359) 测试只是调用API obejct的方法,该方法返回一个Response对象(来自RESTeasy)。 作为测试框架,我使用TestNG。 测试方法 @Test public void testIfValidAccessTokenReturnsCorrectHTTPHeadersWhenTokenIsNotFound() throws InvalidAccessTokenException { Mockito.when(tokenService.validateAccessToken(TestConstants.ACCESS_TOKEN)).thenThrow(new InvalidAccessTokenException()); Response response = tokenAPI_v1.validateAccessToken(TestConstants.ACCESS_TOKEN, TestConstants.USER_AGENT); assert “no-store”.equals(response.getMetadata().getFirst(“Cache-Control”)); assert “no-cache”.equals(response.getMetadata().getFirst(“Pragma”)); } 问题说明 看起来RESTeasy框架在不同的类加载器中加载RuntimeDelegate。 如果我看一下源代码,那么在RuntimeDelegate(包括第126行)中有以下方法: RuntimeDelegate.java 。 因此,与错误相关的主要语句是instanceof check: if (!(delegate […]

PowerMock的expectNew()并没有按预期模拟构造函数

我正在尝试学习各种模拟库的细节, PowerMock (特别是EasyMock扩展)是下一个列表。 我试图模拟一个构造函数,当我尝试复制它们时,提供的示例没有相同的响应。 据我所知,它从不嘲笑构造函数,只是继续进行,就像它是正常的一样。 这是测试类: @RunWith(PowerMockRunner.class) @PrepareForTest({Writer.class}) public class FaultInjectionSituationTest { @Test public void testActionFail() throws Exception { FaultInjectionSituation fis = new FaultInjectionSituation(); PowerMock.expectNew(Writer.class, “test”) .andThrow(new IOException(“thrown from mock”)); PowerMock.replay(Writer.class); System.out.println(fis.action()); PowerMock.verify(Writer.class); } } 我尝试用EasyMock.isA(String.class)替换“test”,但它产生了相同的结果。 这是FaultInjectionSituation: public class FaultInjectionSituation { public String action(){ Writer w; try { w = new Writer(“test”); } catch (IOException […]

TestNG + Mockito + PowerMock – verifyStatic()不起作用

我是新的TestNG和一般的unit testing。 我使用的是TestNG 6.9.6和Mockito 1.10.19以及PowerMock 1.6.4。 我想validationMyService类中的myMethod()方法是否在内部使用正确的参数调用静态方法Util.myStaticMethod 。 由于Mockito本身不支持静态方法的validation,因此我使用PowerMock。 我的测试类如下所示: public class MyTest { private MyService myService; @Captor ArgumentCaptor argCaptor; @BeforeMethod public void setup() { MockitoAnnotations.initMocks( this ); myService = new MyService(); } @Test @PrepareForTest(MyService.class) public void myTest() { PowerMockito.mockStatic(Util.class); myService.myMethod(“arg”); PowerMockito.verifyStatic(10); Util.myStaticMethod(anyString()); } } 由于myMethod调用静态方法Util.myStaticMethod()一次,因此预计此测试将失败。 但是当我运行测试时,它总是通过,无论我传递给PowerMockito.verifyStatic()值是什么。 另外,如果我在这个类中编写另一个测试方法然后运行测试,我会收到以下错误 org.mockito.exceptions.misusing.UnfinishedVerificationException: Missing method call for verify(mock) here: […]

powermock mocking构造函数通过whennew()不能与匿名类一起使用

我有一个DummyResource类和一个DummyTarget文件,以及一个测试类TestDummyResource,如下所示,但DummyResource dr = mock(DummyResource.class)对象DummyResource dr = mock(DummyResource.class)仅在我在一个普通类中调用构造函数时才有效,当它在一个匿名类中调用时,它调用的是实际的构造函数,而不是使用模拟对象。 版本: powermock 1.4.12 mockito 1.9.0 junit 4.8.2 DummyTarget.java: import java.io.IOException; import java.io.OutputStream; import javax.ws.rs.WebApplicationException; import javax.ws.rs.core.StreamingOutput; public class DummyTarget { public StreamingOutput testMocking() { return new StreamingOutput() { @Override public void write(OutputStream arg0) throws IOException, WebApplicationException { new DummyResource(); } }; } } DummyResource.java: package com.smin.dummy; public class […]

如何validation是否未抛出exception

在我使用Mockito的unit testing中,我想validation是否没有抛出NullPointerException 。 public void testNPENotThrown{ Calling calling= Mock(Calling.class); testClass.setInner(calling); testClass.setThrow(true); testClass.testMethod(); verify(calling, never()).method(); } 我的测试设置了testClass ,设置了Calling对象和属性,以便该方法抛出NullPointerException 。 我validation从不调用Calling.method()。 public void testMethod(){ if(throw) { throw new NullPointerException(); } calling.method(); } 我想要一个失败的测试,因为它抛出一个NullPointerException ,然后我想写一些代码来解决这个问题。 我注意到的是测试总是通过,因为exception永远不会被测试方法抛出。

使用SureFire插件的麻烦: – “分叉的虚拟机终止而没有说再见。 VM崩溃或System.exit调用? “

在发生exception后运行unit testing: org.apache.maven.lifecycle.LifecycleExecutionException: ExecutionException; nested exception is java.util.concurrent.ExecutionException: java.lang.RuntimeException: The forked VM terminated without saying properly goodbye. VM crash or System.exit called ? at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:719) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:556) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:535) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:387) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:348) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:180) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:328) at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:138) at org.apache.maven.cli.MavenCli.main(MavenCli.java:362) at org.apache.maven.cli.compat.CompatibleMain.main(CompatibleMain.java:60) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:48) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37) at java.lang.reflect.Method.invoke(Method.java:600) at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315) at […]

为什么不是PowerMock

我正在开发一个项目,我们目前正在使用JUnit和Mockito进行测试。 现在我试图找出将PowerMock添加到混音中的副作用。 它的缺点是什么,我应该知道的任何依赖关系,任何稳定性问题? 我看到它支持Java 8.那里有什么问题吗? 从我所读到的,获得Java 7支持是一条漫长的道路。 编辑:我想一个可以总结的问题是: 不使用PowerMock的原因是什么?

使用Mockito在JUnit中使用PowerMock和PowerRule获取javassist.NotFoundException

我已经将JUnit中的PowerMock和PowerRule与Mockito集成在一起。 这是我的依赖项: javassist javassist 3.12.0.GA asm asm 3.3.1 cglib cglib 2.2.2 org.powermoc powermock-module-junit4 1.4.12 test org.powermock powermock-api-mockito 1.4.12 test org.powermock powermock-module-junit4-rule 1.4.12 test org.powermock powermock-classloading-objenesis 1.4.12 test 我的测试类是: public class TestClass extends AbstractShiroTest{ @Rule public PowerMockRule rule = new PowerMockRule(); @Autowired SomeService someService; @Before public void setUp(){ Map newMap = new HashMap(); newMap.put(“userTimeZone”, “Asia/Calcutta”); Subject […]

使用Powermock时NoClassDefFoundError

我正在使用PowerMock测试运行器运行junit测试用例。 我正在使用以下命令行来执行它: java -cp .:junit-4.9b2.jar:easymock-3.0.jar:powermock-easymock-1.4.8-full.jar org.junit.runner.JUnitCore SampleTest 这样做时,我收到此错误: initializationError(SampleTest) java.lang.NoClassDefFoundError: org/junit/internal/runners/TestClassRunner … 我该如何解决?

我应该使用哪些Maven工件导入PowerMock?

我需要将哪些jar子添加到我的pom.xml才能让PowerMock与Mockito合作? 我有以下依赖项: org.mockito mockito-all 1.9.0 test org.powermock powermock-api-mockito 1.4.11 test org.powermock powermock-api-support 1.4.11 test 但是当我在类级别添加@PrepareForTest注释时,Eclipse无法找到它,但它可以找到PowerMockito 。 我错过了什么jar子?