gpt4 book ai didi

java - 测试在 Jenkins 失败但在外面工作

转载 作者:行者123 更新时间:2023-11-29 09:14:41 26 4
gpt4 key购买 nike

我有一个使用 OpenEJB 测试无状态 session Bean 的测试。我正在使用 Maven 进行构建管理。该测试似乎在 Jenkins 之外(在命令行上)运行良好,但在我在 Jenkins 上添加作业后失败了。

更具体地说,我的测试无法在 JNDI 中查找 EJB 并出现以下异常。

javax.naming.NameNotFoundException: Name "global/slides/SlideService" not found.
at org.apache.openejb.core.ivm.naming.IvmContext.federate(IvmContext.java:198)
at org.apache.openejb.core.ivm.naming.IvmContext.lookup(IvmContext.java:152)
at org.apache.xbean.naming.context.ContextFlyweight.lookup(ContextFlyweight.java:55)
at com.diycomputerscience.slides.service.SlideServiceTest.setUp(SlideServiceTest.java:45)
at junit.framework.TestCase.runBare(TestCase.java:132)
at junit.framework.TestResult$1.protect(TestResult.java:110)
at junit.framework.TestResult.runProtected(TestResult.java:128)
at junit.framework.TestResult.run(TestResult.java:113)
at junit.framework.TestCase.run(TestCase.java:124)
at junit.framework.TestSuite.runTest(TestSuite.java:243)
at junit.framework.TestSuite.run(TestSuite.java:238)
at org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:83)
at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:236)
at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:134)
at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:113)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189)
at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165)
at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85)
at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:103)
at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:74)

我想知道在 Jenkins 中运行测试是否会以某种方式影响 JNDI?我知道 Jenkins 使用 Maven 嵌入器,但 Surefire 插件默认 fork 测试,它可能不在与 Jenkins 相同的 vm 实例中运行。

我在前台运行 jenkins (java -jar jenkins.war) 并且还使用与我登录时相同的用户运行,因此不存在权限问题。此外,我不需要运行 Window Manager,因为我的测试不需要与 UI 交互,这与 Selenium 不同。

我在两个环境中使用的 Java 和 Maven 版本也完全相同。

有什么建议吗?

最佳答案

你试过用这个吗?

"java:comp/env/MY_JNDI_RESOURCE" 

关于java - 测试在 Jenkins 失败但在外面工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10280442/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com