繁体   English   中英

junit测试用例生成器

[英]junit test case generator

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

谢谢

Parasoft的JTest是一种商业工具,但它对以下方面非常有用

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

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

你看过合适吗?

Fit使您可以制作一个html表,然后在junit测试中使用这些值,根据测试结果将表元素变为红色或绿色。 它与JUnit打包在一起。 您确实需要连接固定装置以将表要素转换为Java,但是对此有支持。

周围有很多好的资源

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

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

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

测试数据还以XML格式分层组织,与测试代码的结构相对应。 这个XML文件实际上具有每种方法的所有单元测试用例的数据。 JTestCase帮助循环遍历每种方法的所有测试用例并执行一个

一个针对JUnit。

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

用于生成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("}");

    }

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM