论坛首页 Java企业应用论坛

在Eclipse 下利用TestNG测试SEAM应用

浏览 4424 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-04-01  
    由于上一段时间的项目时间原因,在开发的时间没有来提及写单元测试,前两天项目大部分已经做完,现在需要回过头来对代码的重构和单元测试,对这个TestNG的测试,如果直接用seam工程里的测试脚本进行测试的话还没有多大的问题,但是如果你需要让它在Eclipse下出现你的绿色条还真不是一件容易的事,特别是要结合容器的时候
  public class SampleTest extends SeamTest
{
   
   @Test
   public void testSample() throws Exception
   {
            
      new FacesRequest() {

        
         
      }.run();
      
   }
   
}

那出现的错误就是千奇百怪的了;如果在没有结合容器的时候;那一般只会出现一两种错误;主要是找不到数据源
<?xml version="1.0" encoding="UTF-8"?>
<!-- Persistence deployment descriptor for tests -->
<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="testNGS">
      <provider>org.hibernate.ejb.HibernatePersistence</provider>
      <jta-data-source>java:/DefaultDS</jta-data-source>
      <properties>
         <property name="hibernate.hbm2ddl.auto" value="create-drop"/>
         <property name="hibernate.show_sql" value="true"/>
         <property name="hibernate.cache.use_second_level_cache" value="false"/>
         <property name="jboss.entity.manager.factory.jndi.name" value="java:/testNGSEntityManagerFactory"/>
      </properties>
   </persistence-unit>
    
</persistence>


这是因为你没有启动你的应用服务器
这时你可以不用jndi,你可以利用直接连接数据库,修改以下代码

<?xml version="1.0" encoding="UTF-8"?>
<!-- Persistence deployment descriptor for tests -->
<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="testNGS"
		transaction-type="RESOURCE_LOCAL">
		<provider>org.hibernate.ejb.HibernatePersistence</provider>
		<properties>
			<property name="hibernate.connection.url"
				value="jdbc:mysql://localhost/seam" />
			<property name="hibernate.connection.driver_class"
				value="org.gjt.mm.mysql.Driver" />
			<property name="hibernate.connection.username" value="root" />
			<property name="hibernate.connection.password" value="root" />
			<property name="hibernate.dialect"
				value="org.hibernate.dialect.MySQLDialect" />
			<property name="hibernate.hbm2ddl.auto" value="create-drop" />
			<property name="hibernate.show_sql" value="true" />
			<property name="hibernate.cache.use_second_level_cache"
				value="false" />
			<property name="jboss.entity.manager.factory.jndi.name"
				value="java:/testNGSEntityManagerFactory" />
		</properties>
	</persistence-unit>

</persistence>


这时你可以看到你的数据可以进行操作了(可以看到相应的hql语句)

下面我们来一步一步的进行
1、在Eclipse下安装TestNG插件,这一步很简单,只需要下载后放到plugs下就行了
2、利用seam-gen生成你的seam应用工程,这一步也很简单,只需要两个命令(seam setup、seam create-project)填写你的相应参数就行了
3、将你生成的工程导入到Eclipse下
4、写一个最简单的测试,也可以从seam里取一个简的,但是不能运行,因为还有很多jar没加进来
5、这是最关键的一步,添加jar,只需在原来的基础加入4个jar就行了,有一个jar在工程里不能找到jboss-backport-concurrent.jar;我是从网上下的;注意以下代码;这是ant里最关键的
<path id="test.classpath">			
		<path path="${test.dir}" />
		<fileset dir="${lib.dir}/test">
			<include name="*.jar" />
		</fileset>
		<fileset dir="${lib.dir}">
			<!-- Don't include seam-ui or interop modules -->
			<exclude name="jboss-seam-ui.jar" />
			<exclude name="jboss-seam-wicket.jar" />
			<exclude name="interop/**/*" />
		</fileset>
		<path path="${eejb.conf.dir}" />
		<path refid="test.classpath.extras" />
		<path refid="build.classpath.extras" />
		<path refid="emma.classpath" />
	    <path location="${seam.dir}/src/test/resources/log4j.xml" />
	</path>

6、现在可以运行了,一直绿
  • 大小: 506.9 KB
   发表时间:2008-10-13  
我想请教一下  我也是按你说的这样做的  单元测试好使  集成测试报错
基本是@beforeclass init 的错  不知在eclpse中用testng集成测试seam如何配置   向您请教  希望您能帮帮我
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics