无法在maven项目上运行Randoop



我试图为基于Maven的java应用程序运行Randoop。该项目已通过通过cmd成功编译

G: \javapplic\a12>mvn编译

我想创建测试的java文件出现在:G: \javapplic\a12\src\main\java\org\jaffa\datatypes\configurer

我使用randoop生成文件夹中的类:G: \javapplic\a12\target\classes\org\jaffa\datatypes\configurer

因此,在cmd中,我使用了以下代码来生成测试用例:

java -Xmx3000m -classpath G:javapplica12targetclassesorgjaffadatatypes;G:Newrandoop-all-4.2.2.jar randoop.main.Main gentests --testclass=org.jaffa.datatypes.configurer.MybatisConfigurer

在此处输入图像描述这是当前类的路径

所以在我运行上面的cmd命令后,我得到了以下错误:

G:javapplica12>java -Xmx3000m -classpath G:javapplica12targetclassesorgjaffadatatypes;G:Newrandoop-all-4.2.2.jar randoop.main.Main gentests --testclass=org.jaffa.datatypes.configurer.MybatisConfigurer
Randoop for Java version "4.2.2, branch master, commit 4f20da2, 2020-02-29".
Unable to load class "org.jaffa.datatypes.configurer.MybatisConfigurer" due to exception: java.lang.ClassNotFoundException: org.jaffa.datatypes.configurer.MybatisConfigurerWill explore 0 out of 1 classes
There are no operations to test. Exiting.
Model with hashcode 1846896625:
classTypes = [java.lang.Object]
inputTypes = []
coveredClassesGoal = []
classLiteralMap = {}
annotatedTestValues = []
contracts = ContractSet[size=12]
arity 1: [randoop.contract.EqualsReflexive@5cb9f472, randoop.contract.EqualsToNullRetFalse@cb644e, randoop.contract.EqualsReturnsNormally@13805618, randoop.contract.CompareToReflexive@56ef9176, randoop.contract.SizeToArrayLength@4566e5bd]
arity 2: [randoop.contract.EqualsSymmetric@1ed4004b, randoop.contract.EqualsHashcode@ff5b51f, randoop.contract.CompareToAntiSymmetric@25bbe1b6, randoop.contract.CompareToEquals@5702b3b1]
arity 3: [randoop.contract.EqualsTransitive@69ea3742, randoop.contract.CompareToSubs@4b952a2d, randoop.contract.CompareToTransitive@3159c4b8]
omitMethods = [^org.apache.commons.math3.analysis.differentiation., ^org.apache.commons.math3.analysis.integration., bensuresCapacityb, ^com.google.common.collect.Iterators.cycle(, ^org.apache.commons.math4.genetics.GeneticAlgorithm.getRandomGenerator()$, ^org.apache.commons.math4.util.FastMath.random()$, ^java.util.Date.<init>()$, ^java.io.File.listFiles()$, ^java.io.File.listFiles(java.io.FileFilter)$, ^java.io.File.listFiles(java.io.FilenameFilter)$, ^java.io.File.listRoots()$, ^java.io.File.list()$, ^java.io.File.list(java.io.FilenameFilter)$, ^java.lang.Class.getSigners()$, ^java.lang.Object.hashCode()$, ^java.lang.String.hashCode()$, ^java.lang.System.clearProperty(java.lang.String)$, ^java.lang.System.console()$, ^java.lang.System.currentTimeMillis()$, ^java.lang.System.getProperties()$, ^java.lang.System.getProperty(java.lang.String, java.lang.String)$, ^java.lang.System.getProperty(java.lang.String)$, ^java.lang.System.getSecurityManager()$, ^java.lang.System.getenv()$, ^java.lang.System.getenv(java.lang.String)$, ^java.lang.System.identityHashCode(java.lang.Object)$, ^java.lang.System.inheritedChannel()$, ^java.lang.System.mapLibraryName(java.lang.String)$, ^java.lang.System.nanoTime()$, ^java.lang.System.setProperty(java.lang.String, java.lang.String)$, ^java.lang.reflect.Method.hashCode()$, ^java.text.BreakIterator.getAvailableLocales()$, ^java.util.AbstractList.hashCode()$, ^java.util.AbstractSet.hashCode()$, ^java.util.Arrays.deepHashCode(java.lang.Object[])$, ^java.util.Arrays.hashCode(boolean[])$, ^java.util.Arrays.hashCode(byte[])$, ^java.util.Arrays.hashCode(char[])$, ^java.util.Arrays.hashCode(double[])$, ^java.util.Arrays.hashCode(float[])$, ^java.util.Arrays.hashCode(int[])$, ^java.util.Arrays.hashCode(java.lang.Object[])$, ^java.util.Arrays.hashCode(long[])$, ^java.util.Arrays.hashCode(short[])$, ^java.util.Collection.hashCode()$, ^java.util.Collections.shuffle(java.util.List)$, ^java.util.Comparator.compare(java.lang.Object, java.lang.Object)$, ^java.util.List.hashCode()$, ^java.util.Random.<init>()$, ^java.util.Set.hashCode()$]
Operations:
java.lang.Object.<init> : () -> java.lang.Object

所以,如果有人知道让Randoop在一个专业项目中工作的变通方法,请告诉我

这个问题在这里已经有了答案。我会在这里重复答案,但以后请一次向一个论坛提问。

这个问题与Maven无关。

您的问题的答案在您提供的日志中。您需要修复类路径。

您的Randoop调用只指定了一个要测试的类:

--testclass=org.jaffa.datatypes.configurer.MybatisConfigurer

但是,在类路径中找不到该类:

Unable to load class "org.jaffa.datatypes.configurer.MybatisConfigurer" due to exception: java.lang.ClassNotFoundException: org.jaffa.datatypes.configurer.MybatisConfigurer

因此,Randoop尝试测试0个类:

Will explore 0 out of 1 classes

它不能为这0个类中的任何一个创建测试,所以它退出:

There are no operations to test. Exiting.

如果修复了类路径,就可以运行Randoop。

最新更新