我正在使用Hibernate / Spring / Maven /
MySQL和JUnit进行单元测试。直到昨天,即使测试运行完成,我的测试数据仍保留在数据库中。我从今天开始进行了配置,每次测试运行后突然删除了所有数据。可以肯定的是,这不是错误,而是配置问题。然而,我迷路了。
appContext.xml:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:jdbc="http://www.springframework.org/schema/jdbc"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:util="http://www.springframework.org/schema/util">
<tx:annotation-driven/>
<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"/>
<bean class="org.springbyexample.util.log.AnnotationLoggerBeanPostProcessor" />
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<value>classpath:/settings.properties</value>
</property>
</bean>
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${user}"/>
<property name="password" value="${password}"/>
</bean>
<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="persistenceUnitName" value="RDBMS"/>
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<property name="generateDdl" value="false"/>
<property name="showSql" value="true"/>
<property name="databasePlatform" value="${databasePlatformDialect}"/>
<property name="database">
<util:constant static-field="${databaseVendor}" />
</property>
</bean>
</property>
</bean>
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory"/>
</bean>
<context:component-scan base-package="de.test">
<context:exclude-filter type="regex" expression="de\.sandbox\.test\.hibernatedao.*"/>
</context:component-scan>
<bean class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor"/>
<bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor"/>
</beans>
persistence.xml:
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
version="1.0">
<persistence-unit name="RDBMS" transaction-type="RESOURCE_LOCAL">
<exclude-unlisted-classes>true</exclude-unlisted-classes>
</persistence-unit>
</persistence>
感谢您的建议。
编辑----根据需要,测试用例:
package de.test.base;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.transaction.annotation.Transactional;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("/appContextMain.xml")
@Transactional
public abstract class SpringTestCase {
}
儿童:
package de.test.dao;
import de.test.base.SpringTestCase;
import de.test.businessobjects.BodSt;
import de.test.businessobjects.Trainee;
import junit.framework.Assert;
import org.junit.Before;
import org.junit.Test;
import org.slf4j.Logger;
import org.springbyexample.util.log.AutowiredLogger;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.Collection;
import java.util.List;
public class BodStDAOTest extends SpringTestCase {
@AutowiredLogger
final Logger logger = null;
@Autowired
private IBodStDAO bodStDAO;
@Autowired
private ITraineeDAO traineeDAO;
Trainee trainee = new Trainee();
@Before
public void onSetUpInTransaction() throws Exception {
this.trainee.setName("Name");
this.trainee.setSurname("Surname");
this.trainee = this.traineeDAO.save(this.trainee);
}
@Test
public void testSingleObjectSave() throws Exception {
Collection before = (List) this.bodStDAO.getAll();
BodSt bodSt = new BodSt();
bodSt.setWeight((float) 2.2);
bodSt.setHeight(new Float(0.0));
bodSt.setTrainee(trainee);
bodSt = this.bodStDAO.save(bodSt);
Collection after = (List) this.bodStDAO.getAll();
this.logger.info("BodSt size before: " + before.size() + " and after: " + after.size());
Assert.assertEquals(before.size() + 1, after.size());
}
}
在用于创建测试数据的测试用例上使用@Rollback(value = false)批注可确保不会删除该数据。
使用maven对Spring应用程序进行单元测试后,在完成构建时遇到问题。我注意到mvn安装没有完成,在运行了所有单元测试之后,它似乎挂起了。如果运行我将从cmd行获得要完成的测试,但构建挂起 这就是它的结尾。两个线程正在运行,不确定我在那里做了什么。无论如何,为了排除故障,我删除了所有测试并让程序完全构建。如果我运行,我就可以完成它。最后,我添加了一个JUnit测试,它本质上是一个system.
我有一个文件夹结构如下 当我运行命令时。它只运行Java单元测试(位于*src\test\Java*目录下),而不调用Groovy测试用例。Groovy似乎再也找不到Groovy测试了。 请帮助我在Maven的帮助下启用groovy测试用例执行? 波姆。xml
我的项目中有以下测试类 在我的项目中,我有一些方法是用注释的,这些方法在Spring启动后运行 当我运行AddressParserTest时,myMethod方法也会运行,因为EventListener(ApplicationReadyEvent.class)是否有任何方法可以阻止它在测试期间运行?
问题内容: 我刚刚在Eclipse上第一次安装了插件m2e。 我编写了一个简单的JUnit(版本4)测试。我可以从Eclipse中运行它,但不能从pom.xml中运行它(alt单击,运行方式,Maven测试)。我想我需要告诉Maven搜索该课程,但我只是不知道如何。 另外,我在groupId“ junit”中找不到JUnit 4:只有版本3.8.1可用。我真的需要为3.x版本而不是4+版本编写测试
问题内容: 我正在制作一个Android应用程序,该应用程序对您所能获得的积分有时间限制。但是,如果您关闭该应用程序,计时器将继续运行。应用程序暂停时如何暂停? 问题答案: 您可以用类似的方法取消它 并使用该变量保存在一个或其他持久变量中。然后再次使用该变量以启动计时器 共享偏好
我有3个maven项目。项目1,项目2 为此,我在项目2 pom.xml文件中添加了这个 我的pom。Project3的xml是- 在项目3中,我添加了testng。xml文件来运行测试。现在如果我运行这个测试。xml文件,那么我所有的测试用例都成功运行了。如果我尝试使用maven测试运行测试用例,那么它会失败。 我已经在下面的pom文件中包含了testng.xml文件,以便使用maven运行te