【问题标题】:junit test case generatorjunit 测试用例生成器
【发布时间】:2011-05-05 08:43:26
【问题描述】:

是否有一个好的工具可以根据一些原始模板自动生成 jUnit 测试用例?这样一来,测试用例就可以由没有太多 Java 或 jUnit 背景的工程师编写。作为背景信息,这是用于黑盒测试。如果除了使用 jUnit 之外还有其他方法可以运行回归测试,我也很高兴听到它。

谢谢

【问题讨论】:

    标签: java unit-testing testing junit


    【解决方案1】:

    这是一个典型的工具: http://mediakey.dk/~cc/generate-junit-tests/

    TestGen4J 是一组自动生成单元测试用例的开源工具。 TestGen4J 自动从您自己的 Java 类文件或源文件生成 JUnit 测试用例。它的主要重点是对传递给方法的参数进行边界值测试。它使用写在用户可配置 XML 文件中的规则来定义数据类型的边界条件。借助 JTestCase 将测试代码与测试数据分离。

    测试代码以分层方式生成。生成一个主测试套件,它调用各个类的测试套件。单个类的测试套件是由该类的测试方法的集合形成的。

    测试数据也是分层组织的,对应于测试代码的结构,采用 XML 格式。这个 XML 文件实际上包含每个方法的所有单元测试用例的数据。 JTestCase 有助于循环每个方法的所有测试用例并执行一个

    对 JUnit。

    【讨论】:

    • 源代码将无法用于解析以生成测试用例。
    【解决方案2】:

    Parasoft 的 JTest 是一个商业工具,但它非常适合:

    • 为现有代码库生成单元测试
    • 创建回归测试

    如需免费解决方案,您可以尝试CodePro Analytix Eclipse 插件的 JUnit 生成功能。

    【讨论】:

      【解决方案3】:

      另一种选择可能是创建一种对工程师来说有意义的更高级别的领域特定语言,以便他们编写测试代码。Groovy 是一种简单的方法(谷歌 groovy 和 DSL),或者在另一端频谱使用JavaCC。

      【讨论】:

        【解决方案4】:

        你看过fit吗?

        Fit 允许您创建一个 html 表格,然后在您的 junit 测试中使用这些值,根据测试结果将表格元素变为红色或绿色。它与 JUnit 一起打包。您确实需要连接夹具以将表格元素转换为 Java,但对此有支持。

        有很多不错的resources 在周围飘荡。

        【讨论】:

          【解决方案5】:

          用 Java 生成测试用例的示例代码:

          import java.util.ArrayList;
          import java.util.List;
          
          public class JunitGenerator {
          
              public static List<String> s = new ArrayList();
          
              static String clname="employee";
              static String clBigname="Employee";
          
              public static void main(String[] args) {
          
                  s.add("String;name;Name");
                  s.add("int;age;Age");
                  s.add("Boolean;isAge;IsAge");
                  s.add("Double;amount;Amount");
          
                  System.out.println("import static org.junit.Assert.*;");
                  System.out.println("import static org.junit.Assert.assertEquals;");
          
                  System.out.println("import org.junit.Test;");
                  System.out.println();
                  System.out.println("public class "+clBigname+"Test{");
                  System.out.println(""+clBigname+" "+clname+"=new "+clBigname+"();");
          
                  for(String s1:s) {
                      String[] a=s1.split(";");
                      System.out.println("@Test");
                      System.out.println("public void get"+a[2]+"Test(){");
                      if(a[0].equalsIgnoreCase("int"))
                          System.out.println(a[0]+" "+a[1]+" =0"+";");
                      if(a[0].equalsIgnoreCase("String"))
                          System.out.println(a[0]+" "+a[1]+" =null"+";");
                      if(a[0].equalsIgnoreCase("Double"))
                          System.out.println(a[0]+" "+a[1]+" =0.0"+";");
                      if(a[0].equalsIgnoreCase("Boolean"))
                          System.out.println(a[0]+" "+a[1]+" =false"+";");
                      System.out.println(""+ clname +".set"+a[2]+"("+a[1]+");");
                      if(!a[0].equalsIgnoreCase("String"))
                          System.out.println("assertNotNull("+ clname +".get"+a[2]+"());");
                      if(a[0].equalsIgnoreCase("String"))
                          System.out.println("assertEquals("+a[1]+","+ clname +".get"+a[2]+"());");
                      System.out.println("}");
                  }
          
                  System.out.println("}");
          
              }
          
          }
          

          【讨论】:

          • 用java生成测试用例的示例程序
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2017-05-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-09-26
          • 1970-01-01
          相关资源
          最近更新 更多