Java 如何运行最可怜的ant脚本

Java 如何运行最可怜的ant脚本,java,ant,pitest,Java,Ant,Pitest,我正在尝试创建一个ant脚本来运行pitest,以便能够自动化我的变异测试。我得到一个错误: 无法找到或加载主类org.pitest.mutationtest.commandline.MutationCoverageReport 这是我的MutationTest.xml ant脚本 <?xml version="1.0" encoding="UTF-8" standalone="no"?> <project basedir="." default="mutationCovera

我正在尝试创建一个ant脚本来运行pitest,以便能够自动化我的变异测试。我得到一个错误:

无法找到或加载主类org.pitest.mutationtest.commandline.MutationCoverageReport

这是我的MutationTest.xml ant脚本

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<project basedir="." default="mutationCoverage" name="PhoneBook">
    <property name="ECLIPSE_HOME" value="C:/Program Files/eclipse/"/>
    <path id="JUnit 4.libraryclasspath">
        <pathelement location="${ECLIPSE_HOME}plugins/org.junit_4.11.0.v201303080030/junit.jar"/>
        <pathelement location="${ECLIPSE_HOME}plugins/org.hamcrest.core_1.3.0.v201303031735.jar"/>
    </path>
    <path id="PhoneBook.classpath">
        <pathelement location="bin"/>
        <path refid="JUnit 4.libraryclasspath"/>
    </path>
    <path id="pit.path">
        <pathelement location="lib/pitest-1.1.4.jar" />
        <pathelement location="lib/pitest-ant-1.1.4.jar" />
    </path>

    <taskdef name="pitest" classname="org.pitest.ant.PitestTask" classpathref="pit.path" />

    <target name="mutationCoverage">
        <pitest
            pitClasspath="PhoneBook.path"
            classPath="PhoneBook.path"
            targetClasses="pbook.*"
            targetTests="pbook.*"
            reportDir="MutationReports"
            sourceDir="src"/>
    </target>
</project>

我不知道这是好是坏,但希望这将有助于发现问题。

最简单的ant构建的工作示例在

我建议您从这个开始并编辑它,直到您有一个代码库的工作构建

我可以看到的一个区别是,您没有在最可怜的路径中包含junit

您的构建看起来有点奇怪,因为它似乎与eclipse有关。如果您是从IDE运行的,为什么不使用eclipse插件呢


此外,如果你不与蚂蚁绑定,你可能想考虑Maven作为替代。

我相信你的问题是,你尝试使用Eclipse生成的Buff.xml文件,它不包含突变测试目标,并且你添加的目标来弥补这个错误。

我建议从项目开始,尝试理解它是如何工作的,然后更改build.xml文件以满足您的需要。 但是,如果这不起作用,根据您的判断,以下build.xml应该在以下情况下起作用:

  • 将文件分为两个源目录“src”和“test”
  • src和test文件夹都包含包“pbook”
  • 您将测试的名称更改为以“Test”结尾,而不是以“Test”开头
  • 
    
    < /代码>(PITEST)警告:请考虑将此报告给Or.Pistest.ReLo.xFiel.C.U.L.Field[Pist]警告:使用-非法访问=警告以启用进一步非法反射访问操作的警告(PITEST)警告:所有非法访问操作将在未来版本中被拒绝[PITEST ]上午11:22:50 PIT>>信息:详细日志记录已禁用。如果遇到问题,请在报告问题之前启用它。线程“main”java.lang.IllegalArgumentException中的[pitest]异常位于org.pitest.reloc.asm.ClassReader上的线程“main”java.lang.IllegalArgumentException[pitest]。(未知源)[pitest]位于org.pitest.reloc.asm.ClassReader。(未知源)[pitest]位于org.pitest.classinfo.classinfo.classinfo.getClassInfo(ClassInfoVisitor.java:41)如何解决这个问题
    [pitest] Exception in thread "main" org.pitest.util.PitError: Unable to load class content for org.pitest.boot.HotSwapAgent
    [pitest] Please copy and paste the information and the complete stacktrace below when reporting an issue
    [pitest] VM : Java HotSpot(TM) 64-Bit Server VM
    [pitest] Vendor : Oracle Corporation
    [pitest] Version : 25.25-b02
    [pitest] Uptime : 370
    [pitest] Input -> 
    [pitest] BootClassPathSupported : true
    [pitest]    at org.pitest.mutationtest.tooling.JarCreatingJarFinder.classBytes(JarCreatingJarFinder.java:124)
    [pitest]    at org.pitest.mutationtest.tooling.JarCreatingJarFinder.addClass(JarCreatingJarFinder.java:113)
    [pitest]    at org.pitest.mutationtest.tooling.JarCreatingJarFinder.createJarFromClassPathResources(JarCreatingJarFinder.java:98)
    [pitest]    at org.pitest.mutationtest.tooling.JarCreatingJarFinder.createJar(JarCreatingJarFinder.java:74)
    [pitest]    at org.pitest.mutationtest.tooling.JarCreatingJarFinder.getJarLocation(JarCreatingJarFinder.java:63)
    [pitest]    at org.pitest.mutationtest.tooling.EntryPoint.execute(EntryPoint.java:70)
    [pitest]    at org.pitest.mutationtest.tooling.EntryPoint.execute(EntryPoint.java:43)
    [pitest]    at org.pitest.mutationtest.commandline.MutationCoverageReport.runReport(MutationCoverageReport.java:72)
    [pitest]    at org.pitest.mutationtest.commandline.MutationCoverageReport.main(MutationCoverageReport.java:43)