哈德逊&x2B;JUnit+;嵌入式GlassFish,如何提供域配置?

哈德逊&x2B;JUnit+;嵌入式GlassFish,如何提供域配置?,junit,hudson,glassfish-embedded,Junit,Hudson,Glassfish Embedded,我正在使用NetBeans和GlassFish 3.0.1创建一个EJB3应用程序。我已经编写了一些单元测试,它们通过JUnit运行,并利用嵌入式GlassFish。每当我在我的开发机器上运行这些测试时(从NetBeans内部),一切都很好 现在我想让哈德逊做这些测试。此时,由于资源(在本例中是JPA持久性单元的数据源)上的查找失败而失败: 在四处搜索并试图了解这一点之后,我相信这与未配置资源的嵌入式GlassFish有关。换句话说,它缺少一个domain.xml文件。对吧? 两个问题: 为什么

我正在使用NetBeans和GlassFish 3.0.1创建一个EJB3应用程序。我已经编写了一些单元测试,它们通过JUnit运行,并利用嵌入式GlassFish。每当我在我的开发机器上运行这些测试时(从NetBeans内部),一切都很好

现在我想让哈德逊做这些测试。此时,由于资源(在本例中是JPA持久性单元的数据源)上的查找失败而失败:

在四处搜索并试图了解这一点之后,我相信这与未配置资源的嵌入式GlassFish有关。换句话说,它缺少一个domain.xml文件。对吧?

两个问题:

  • 为什么它在我的开发盒上与NetBeans一起工作?NetBeans在后台有什么魔力
  • 我应该如何提供该文件?哈得逊盒子上嵌入的玻璃鱼期望它在哪里
  • Hudson使用相同的Ant构建脚本(由NetBeans创建)

    我已经读过instanceRoot和EmbeddedFileSystemBuilder,但我对此了解不够。是否每个测试用例都需要这样做(Emb.GF为每个测试中的bean启动/停止)?这是EJBContainer.createEJBContainer()的一部分吗?同样,为什么在NetBeans上运行测试时不需要这样做

    更新
    按照Peter的建议,我可以确认:当在新签出的代码副本上运行ant时,使用与hudson配置相同的属性,测试将被执行

    10-1这是一个类路径问题,因为IDE倾向于根据您是正常运行还是单元测试来交换路径

    尝试从SCM中新签出的版本在命令行上运行测试。很可能你也会犯同样的错误。在本地计算机上调试要比在远程计算机上调试容易得多


    当它可靠地建立在命令行上(在一个单独的目录中)时,是时候转到hudson了。

    谢谢你的建议!当我运行“ant测试”时,测试实际上可以工作并得到执行。还有其他想法吗?@Hank:你是从命令行在Hudson服务器上运行的吗?如果是,则可能是权限问题。用和哈德逊相同的证书来运行你的测试?@2nd Peter:你这个老头子!谢谢,伙计,就这样$hudson用户无法读取{GLASSFISH_HOME}/GLASSFISH/domains/domain1/config。现在一切都好了!
    [junit] SEVERE: Exception while invoking class org.glassfish.persistence.jpa.JPADeployer prepare method
    [junit] java.lang.RuntimeException: javax.naming.NamingException: Lookup failed for 'mvs_devel' in SerialContext