Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JUnit测试在本地上运行,但不在Jenkins上运行_Java_Spring_Maven_Jenkins - Fatal编程技术网

Java JUnit测试在本地上运行,但不在Jenkins上运行

Java JUnit测试在本地上运行,但不在Jenkins上运行,java,spring,maven,jenkins,Java,Spring,Maven,Jenkins,我和詹金斯有个奇怪的错误 Jenkins服务器与本地测试在同一台计算机上,但我得到的是: 当我在本地(通过运行cmd窗口)上对一个名为CarStatusDao的类运行4个测试时,输出如下: Running net.****.****.dao.carstatus.CarStatusDaoTest Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.032 sec 测试运行没有任何问题 当我执行完全相同的代码时,但对

我和詹金斯有个奇怪的错误

Jenkins服务器与本地测试在同一台计算机上,但我得到的是:

当我在本地(通过运行cmd窗口)上对一个名为CarStatusDao的类运行4个测试时,输出如下:

Running net.****.****.dao.carstatus.CarStatusDaoTest

Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.032 sec
测试运行没有任何问题

当我执行完全相同的代码时,但对Jenkins(他从SVN获得完全相同的代码):

因此,基本上,在本地,Maven能够在类
CarStatusDaoTest
autowired
我的属性
carStatusDAO
,但当我在Jenkins上运行它时,它不能…:/

我不明白为什么这样不同的行为,而Maven是一样的,代码也是一样的…./

我假设这是一个类路径问题,因为这是唯一不同的事情:/

但我不知道如何修复它

对于上下文,这里是my/META-INF/spring/carfleet-dao-test-context.xml:

<context:component-scan base-package="net.****.****" />

<jd:embedded-database id="dataSource" type="HSQL">
    <jd:script location="classpath:sql/hsql-schema.sql" />
    <jd:script location="classpath:sql/test-data.sql" />
</jd:embedded-database>

<bean id="entityManagerFactory"
    class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="jpaVendorAdapter">
        <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" />
    </property>
    <property name="persistenceUnitName" value="testunit" />
    <property name="dataSource" ref="dataSource" />
    <property name="packagesToScan" >
        <list>
            <value>net.****.****.domain</value>
        </list>
    </property>
</bean>

<bean
    class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor" />

<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
    <property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>

<tx:annotation-driven />
这是我所有测试的母班:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath*:/META-INF/spring/carfleet-dao-test-context.xml")
@TransactionConfiguration(transactionManager = "transactionManager", defaultRollback = true)
public class AbstractDaoTest {

    @Autowired
    private EntityFactory entityFactory;

    public EntityFactory getEntityFactory() {
        return entityFactory;
    }

    @Test
    public void shouldEntityFactoryBeNotNull() {

        assertNotNull(entityFactory);
    }
}
提前感谢,, 致以最良好的祝愿

编辑

以下是Jenkins上显示的Maven配置:

Apache Maven 3.3.3 (7994120775791599e205a5524ec3e0dfe41d4a06; 2015-04-22T13:57:37+02:00)
Maven home: C:\Program Files\Maven
Java version: 1.7.0_80-ea, vendor: Oracle Corporation
Java home: C:\Java\jdk1.7.0_80\jre
Default locale: en_US, platform encoding: Cp1252
OS name: "windows 7", version: "6.1", arch: "x86", family: "windows"
下面是Windows控制台中mvn-v的结果:

Apache Maven 3.3.3 (7994120775791599e205a5524ec3e0dfe41d4a06; 2015-04-22T13:57:37+02:00)
Maven home: C:\Program Files\Maven
Java version: 1.7.0_80-ea, vendor: Oracle Corporation
Java home: C:\Java\jdk1.7.0_80\jre
Default locale: en_US, platform encoding: Cp1252
OS name: "windows 7", version: "6.1", arch: "x86", family: "windows"   

只是类
CarStatusDaoImpl
未提交的问题

在SVN上提交的每一个课程中,Jenkins都会得到它们,并且:

Running net.****.****.dao.carstatus.CarStatusDaoTest

Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.036 sec

在詹金斯的节目里!谢谢!

当jenkins作业在本地运行时提到了BrowserCapabilities时,我遇到了这个与bean相关的错误,删除BrowserCapbilities并运行作业后,本地未引发此错误,测试通过

当您说local时,它是在eclipse上还是在Windows控制台上?在Windows控制台上,使用命令:mvn-e-p prod clean package。这就是Jenkins中的确切命令如果这是您在日志中可以看到的唯一错误,我不希望它是类路径,因为您应该知道无法自动连接NoClassDefFoundError或类似错误的原因。当你说“当我在詹金斯身上运行时”,你到底运行什么?构建一个普通的maven构建?是否在某处部署?是否已检查settings.xml文件以检查存储库?我的意思是,举例来说,如果你有libs,那么可能是你正在jenkins中运行一个旧版本的lib。因为它或多或少说明了这一点,所以您还没有创建CarStatusDao类型的bean。所以问题是您的CarStatusDao看起来如何,它是否与您正在构建的jar文件在同一个jar文件中?如果没有,您可以有两个不同的存储库,每个存储库都有一个jar,但包含不同的内容。我假设您在CarStatusDao中有@Repository注释,并对其进行组件扫描?确保您已将CarStatusDaoImpl添加到svn并将其签入。我有一个不同的IntelliJ皮肤,但通常它有不同的颜色,如果你没有在类中检查或没有添加到svn。如果你没有添加它,你应该得到这个效果。
Apache Maven 3.3.3 (7994120775791599e205a5524ec3e0dfe41d4a06; 2015-04-22T13:57:37+02:00)
Maven home: C:\Program Files\Maven
Java version: 1.7.0_80-ea, vendor: Oracle Corporation
Java home: C:\Java\jdk1.7.0_80\jre
Default locale: en_US, platform encoding: Cp1252
OS name: "windows 7", version: "6.1", arch: "x86", family: "windows"
Apache Maven 3.3.3 (7994120775791599e205a5524ec3e0dfe41d4a06; 2015-04-22T13:57:37+02:00)
Maven home: C:\Program Files\Maven
Java version: 1.7.0_80-ea, vendor: Oracle Corporation
Java home: C:\Java\jdk1.7.0_80\jre
Default locale: en_US, platform encoding: Cp1252
OS name: "windows 7", version: "6.1", arch: "x86", family: "windows"   
Running net.****.****.dao.carstatus.CarStatusDaoTest

Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.036 sec