51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 6517|回复: 11
打印 上一主题 下一主题

TestNG关于实现参数化问题

[复制链接]
  • TA的每日心情
    开心
    2016-12-15 14:19
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    跳转到指定楼层
    1#
    发表于 2012-2-16 14:13:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    使用eclipse IDE,对TestNG进行参数化的时候,每次都不读取自己创建的TestNG.xml文件,读取的是C:\Documents and Settings\chengy\Local Settings\Temp\testng-eclipse--1871915179\testng-customsuite.xml这个文件,并且每次运行都是随机生成一个testng-eclipse--**********文件夹,然后使用里面的testng-customsuite.xml文件,怎么使用我自己创建的TestNG.xml。
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2016-12-15 14:19
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    2#
     楼主| 发表于 2012-2-16 14:28:14 | 只看该作者
    怎么使用我自己创建的TestNG.xml,需要设置什么吗,还是我新建TestNG.xml的时候,选择的不正确嘛,我是右键项目--》 TestNG--》convert to TestNG,然后就是默认。生成出来的文件就是下面这个样子
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
    <suite name="Suite" >
    <parameter name="text" value="工程师"></parameter>   这一行参数是我自己添加的 
      <test name="Test" preserve-order="true">
        <classes>
          <class name="bao.NewTest"/>
        </classes>
      </test> <!-- Test -->
    </suite> <!-- Suite -->

    以下是我的TestNG类
    package bao;

    import org.testng.annotations.Parameters;
    import org.testng.annotations.Test;

    public class NewTest {
      @Test
      @Parameters({"text"})
      public void f(String[] text) {
          System.out.println("测试");
          System.out.println(text);
      }
    }

    这些是错误信息
    Parameter 'text' is required by @Test on method f but has not been marked @Optional or defined
    in C:\Documents and Settings\chengy\Local Settings\Temp\testng-eclipse--1871915179\testng-customsuite.xml
    请问各位,我那个环节有问题吗,为什么不用自己的TestNG.xml
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3#
    发表于 2012-2-18 10:10:34 | 只看该作者
    楼主是不是这样的情况

    1. 有一个TestNG.xml文件,里面有不止一个测试
    2. 你想用TestNG.xml这个文件的数据,但是只运行1个测试

    如果是这样的情况,那eclipse每次都会“帮你”生成一个临时的文件(就像你遇到的情况一样),那个临时生成的文件里面没有你定义的text的parameter

    解决办法可是试试:

    1. copy一下TestNG.xml文件,新文件可以叫“testng_debug.xml”
    2. 把你想调试的那个测试(就是这个节点: <test name="Test" preserve-order="true"> 下面的所有东西)节点copy到那个testng_debug.xml里面
    3. 右键点击testng_debug.xml,选择run as TestNG
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    4#
    发表于 2012-4-24 23:09:00 | 只看该作者
    testtest.java
    package bao;

    import org.testng.annotations.Parameters;
    import org.testng.annotations.Test;

    public class NewTest {
      @Test
      @Parameters({"text"})
      public void f(String[] text) {
          System.out.println("测试");
          System.out.println(text);
      }
    }
    testng.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
    <suite name="Default suite">
    <parameter name="text" value="工程师"/>
      <test verbose="2" name="Default test">
        <classes>
          <class name="bao.testTest"/>
        </classes>
      </test> <!-- Default test -->
    </suite> <!-- Default suite -->
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    5#
    发表于 2012-5-16 14:55:22 | 只看该作者
    运行时不成功,提示如下,不知怎么回事?

    [TestNG] Running:
      D:\workspace\test\testng.xml

    SKIPPED: f
    java.lang.AssertionError: Unsupported type parameter : class [Ljava.lang.String;
            at org.testng.internal.Parameters.convertType(Parameters.java:246)
            at org.testng.internal.Parameters.createParameters(Parameters.java:165)
            at org.testng.internal.Parameters.createParameters(Parameters.java:355)
            at org.testng.internal.Parameters.handleParameters(Parameters.java:447)
            at org.testng.internal.Invoker.handleParameters(Invoker.java:1371)
            at org.testng.internal.Invoker.createParameters(Invoker.java:1068)
            at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1171)
            at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:127)
            at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:111)
            at org.testng.TestRunner.privateRun(TestRunner.java:768)
            at org.testng.TestRunner.run(TestRunner.java:617)
            at org.testng.SuiteRunner.runTest(SuiteRunner.java:334)
            at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:329)
            at org.testng.SuiteRunner.privateRun(SuiteRunner.java:291)
            at org.testng.SuiteRunner.run(SuiteRunner.java:240)
            at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:53)
            at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:87)
            at org.testng.TestNG.runSuitesSequentially(TestNG.java:1185)
            at org.testng.TestNG.runSuitesLocally(TestNG.java:1110)
            at org.testng.TestNG.run(TestNG.java:1022)
            at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:109)
            at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:202)
            at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:173)


    ===============================================
        Default test
        Tests run: 1, Failures: 0, Skips: 1
    ===============================================
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    6#
    发表于 2012-5-16 14:57:13 | 只看该作者
    本帖最后由 xiecj_2006 于 2012-5-16 14:58 编辑

    //testtest.java
    package bao;

    import org.testng.annotations.Parameters;
    import org.testng.annotations.Test;

    public class NewTest {
      @Test
      @Parameters({"text"})
      public void f(String[] text) {
          System.out.println("测试");
          System.out.println(text);
      }
    }

    Testng.xml
    红色部分修改了一下,其它没修改

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
    <suite name="Default suite">
    <parameter name="text" value="工程师"/>
      <test verbose="2" name="Default test">
        <classes>
          <class name="com.test.NewTest"/>  
        </classes>
      </test> <!-- Default test -->
    </suite> <!-- Default suite -->
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    7#
    发表于 2012-5-16 15:55:35 | 只看该作者
    不明白,直接在testng.xml点运行不就行了吗?只有在class那里点运行才会出现你那种情况吧
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    8#
    发表于 2012-8-28 09:17:52 | 只看该作者
    回复 7# eqbin
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    9#
    发表于 2012-8-28 09:19:47 | 只看该作者
    回复 7# eqbin
    是的,直接运行testng。xml就行了,testNG会按照该文件的配置运行相应的用例,也就是你的java类。如果在单独的java'类中运行,他就不会按照你的xml来运行了
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    10#
    发表于 2013-2-20 15:04:17 | 只看该作者
    测试代码里边没有标记@Test,所以就找不到了 这个英文提示不是很清晰吗?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    11#
    发表于 2014-4-2 10:46:06 | 只看该作者
    我现在遇到和你一样的问题了,请问你这个问题解决了么?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    12#
    发表于 2015-12-2 14:03:00 | 只看该作者
    你这个问题最后怎么解决的?我刚学习testng,也是遇到了这个问题,求助!
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-15 02:42 , Processed in 0.081476 second(s), 27 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表