Arquillian与weblogic 10.3.6

时间:2016-04-08 11:39:57

标签: java weblogic jboss-arquillian

我正在尝试使用Arquillian在Weblogic上测试war(使用EJB)。

我的设置:

  • gradle 2.12
  • build.gradle有:

    dependencies {
        providedCompile 'javax.ejb:ejb-api:3.0'
    
        compile "org.eclipse.persistence:eclipselink:2.6.2"
    
        testCompile "org.jboss.arquillian.container:arquillian-wls-remote-10.3.x:1.0.1.Final"   
        testCompile "org.jboss.shrinkwrap.resolver:shrinkwrap-resolver-gradle-depchain:2.2.2"   
        testCompile "org.jboss.arquillian.junit:arquillian-junit-container:1.1.11.Final"
        testCompile "org.jboss.arquillian.protocol:arquillian-protocol-servlet:1.1.11.Final"
    
    
        testCompile "junit:junit:4.12"
    }
    
  • 测试类成立:

    @RunWith(Arquillian.class)
    public class FooTest {
    
    
    @Deployment
        public static EnterpriseArchive deploy() {
             WebArchive webArchive = ShrinkWrap.create(EmbeddedGradleImporter.class) //
            .forThisProjectDirectory() //
            .importBuildOutput() //
            .as(WebArchive.class) //
            .addPackages(true, "foo") //
            .addClass(FooTest.class)
            ;
    
              EnterpriseArchive enterpriseArchive = ShrinkWrap.create(EnterpriseArchive.class, "foo.ear") //
                .addAsModule(webArchive) //             
                ;
    
    
              return enterpriseArchive;
            }
    
        @Test
        public void test() throws Exception {
            // TODO
            assertNotNull(null);
        }
    ...
    

然而,一旦部署成功+测试应该开始,我得到:

java.lang.IllegalAccessError: tried to access method org.junit.runners.ParentRunner.getTestClass()Lorg/junit/runners/model/TestClass; from class org.jboss.arquillian.junit.Arquillian$2
    at org.jboss.arquillian.junit.Arquillian$2.evaluate(Arquillian.java:202)
    at org.jboss.arquillian.junit.Arquillian.multiExecute(Arquillian.java:426)
    at org.jboss.arquillian.junit.Arquillian.access$200(Arquillian.java:54)
    at org.jboss.arquillian.junit.Arquillian$3.evaluate(Arquillian.java:218)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:220)
    at org.jboss.arquillian.junit.Arquillian.run(Arquillian.java:166)
    at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
    at org.junit.runner.JUnitCore.run(JUnitCore.java:116)
    at org.jboss.arquillian.junit.container.JUnitTestRunner.execute(JUnitTestRunner.java:66)
    at org.jboss.arquillian.protocol.servlet.runner.ServletTestRunner.executeTest(ServletTestRunner.java:170)
    at org.jboss.arquillian.protocol.servlet.runner.ServletTestRunner.execute(ServletTestRunner.java:135)
    at org.jboss.arquillian.protocol.servlet.runner.ServletTestRunner.doGet(ServletTestRunner.java:98)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
    at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
    at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
    at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:301)
    at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
    at oracle.security.jps.ee.http.JpsAbsFilter$1.run(JpsAbsFilter.java:119)
    at java.security.AccessController.doPrivileged(Native Method)
    at oracle.security.jps.util.JpsSubject.doAsPrivileged(JpsSubject.java:324)
    at oracle.security.jps.ee.util.JpsPlatformUtil.runJaasMode(JpsPlatformUtil.java:460)
    at oracle.security.jps.ee.http.JpsAbsFilter.runJaasMode(JpsAbsFilter.java:103)
    at oracle.security.jps.ee.http.JpsAbsFilter.doFilter(JpsAbsFilter.java:171)
    at oracle.security.jps.ee.http.JpsFilter.doFilter(JpsFilter.java:71)
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
    at oracle.dms.servlet.DMSServletFilter.doFilter(DMSServletFilter.java:163)
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
    at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3730)
    at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3696)
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
    at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
    at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2273)
    at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2179)
    at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1490)
    at weblogic.work.ExecuteThread.execute(ExecuteThread.java:256)
    at weblogic.work.ExecuteThread.run(ExecuteThread.java:221)

据我所知,由于界面不兼容,问题在于需要一些旧版本的JUnit(4.8.1)。但是我的版本比我晚了。

知道怎么解决吗?

0 个答案:

没有答案