制作响应式网站,互联网app推广,wordpress 破解账号,2345推广联盟拓展阅读 junit5 系列 基于 junit5 实现 junitperf 源码分析 Auto generate mock data for java test.(便于 Java 测试自动生成对象信息)
Junit performance rely on junit5 and jdk8.(java 性能测试框架。性能测试。压测。测试报告生成。)
拓展阅读
自动生成测试用例
Rand…拓展阅读 junit5 系列 基于 junit5 实现 junitperf 源码分析 Auto generate mock data for java test.(便于 Java 测试自动生成对象信息)
Junit performance rely on junit5 and jdk8.(java 性能测试框架。性能测试。压测。测试报告生成。)
拓展阅读
自动生成测试用例
Randoop
Randoop是用于Java的单元测试生成器它可以自动为你的类创建JUnit格式的单元测试。
Randoop手册详细说明了如何安装和运行Randoop。
Randoop的工作原理是通过反馈导向的随机测试生成。
这种技术会为被测试类伪随机但智能地生成一系列方法/构造函数调用序列。Randoop执行生成的序列并利用执行结果创建捕获程序行为的断言。Randoop从代码序列和断言中创建测试用例。
Randoop可用于两个目的发现程序中的错误以及创建回归测试以在将来警告您更改程序行为。
Randoop将测试生成和测试执行相结合形成一种高效的测试生成技术。Randoop甚至在广泛使用的库中发现了以前未知的错误包括Sun和IBM的JDKs以及核心.NET组件。Randoop在工业界仍在使用例如在ABB公司。
文档
Randoop用户手册
对于Randoop的开发者/贡献者
Randoop开发者手册Randoop API文档项目创意页面供贡献者/研究者使用有关Randoop的科学论文
简介
编写测试是重要的但也是困难且耗时的任务。Randoop可以自动生成Java类的单元测试。
Randoop在许多应用场景中取得了成功特别是在库类例如java.util中。Randoop在ABB和Microsoft等公司以及开源项目中都得到了使用。
以下是Randoop生成的一个JUnit测试用例该测试用例揭示了OpenJDK中的一个错误手动添加了注释
// 此测试表明JDK集合类可以创建一个与自身不相等的对象。
Test
public static void test1() {LinkedList list new LinkedList();Object o1 new Object();list.addFirst(o1);// TreeSet是一个有序集合。根据API文档此构造函数调用应该引发// ClassCastException因为列表元素不可比较。但是构造函数却默默地且问题地接受了列表。TreeSet t1 new TreeSet(list);Set s1 Collections.synchronizedSet(t1);// 到这一步我们成功地创建了一个违反相等性自反性的集合s1// 它与自身不相等这个断言在OpenJDK上运行时失败。org.junit.Assert.assertEquals(s1, s1);
}Randoop生成两种类型的测试
发现错误的错误揭示测试用于检测当前代码中的缺陷。用于检测未来错误的回归测试。
Randoop的典型使用方式如下 如果Randoop输出了任何发现错误的测试首先修复底层的缺陷然后重新运行Randoop重复这个过程直到Randoop不再输出发现错误的测试。 将回归测试添加到项目的测试套件中。 每当更改项目时运行回归测试。这些测试将通知您程序行为的更改。 如果有任何测试失败将测试用例最小化然后调查失败原因。 如果测试失败指示您引入了代码缺陷请修复该缺陷。 如果测试失败指示测试过于脆弱或具体例如某个方法的输出值已更改但新值与旧值一样可接受则忽略该测试。 如果忽略了任何测试或者如果添加了新代码需要测试那么重新运行Randoop以生成新的回归测试套件以替换旧的套件。
论文《Scaling up automated test generation: Automatically generating maintainable regression unit tests for programs》提供了有关如何在项目的整个生命周期内使用Randoop生成的测试的其他建议。
一个典型的程序员只会检查很少量的Randoop测试仅当它们失败并且显示了缺陷或回归失败时而且通常只会检查它们的最小化版本。
典型的程序员永远不会手动修改Randoop测试。
安装Randoop的步骤如下 Randoop支持Java 8、Java 11、Java 17或Java 19的JVM。 下载并解压文件 randoop-4.3.2.zip。本手册使用 ${RANDOOP_PATH} 表示解压后的存档路径使用 ${RANDOOP_JAR} 表示在解压存档中 randoop-all-4.3.2.jar 的位置。 或者如果您想查看或使用源代码请按照Randoop开发者手册的“入门”部分的说明进行操作。 您可能希望加入 randoop-discussgooglegroups.com 邮件列表以便收到有关新发布的通知。
运行Randoop
可以通过调用其主类 randoop.main.Main 来实现
java randoop.main.Main command args...Randoop支持三个命令 gentests 生成单元测试。详细信息请参见生成测试。示例用法 java -Xmx3000m -classpath myclasspath:${RANDOOP_JAR} randoop.main.Main gentests --testclassjava.util.TreeSet --output-limit100但请注意使用 --testclass 命令行参数仅指定一个被测试的类是非常不寻常的。 minimize 最小化失败的JUnit测试套件。详细信息请参见最小化失败的JUnit测试套件. 示例用法 java -cp ${RANDOOP_JAR} randoop.main.Main minimize --suitepathErrorTest0.java --suiteclasspathmyclasspathhelp 打印使用消息。详细信息请参见获取帮助。示例用法 java -classpath ${RANDOOP_JAR} randoop.main.Main help
java -classpath ${RANDOOP_JAR} randoop.main.Main help gentests
java -classpath ${RANDOOP_JAR} randoop.main.Main help minimize在Windows上调整classpath例如使用分号而不是冒号作为分隔符。