簡體   English   中英

使用pitest時過濾ant中的類

[英]Filter classes in ant when using pitest

讓我們考慮一下這個基本的ant + pitest示例: https : //github.com/hcoles/pitest-ant-example

測試類的類路徑定義如下:

<!-- classpath for compiling and testing the code. Note it does not include pitest and it's dependencies -->
<path id="test.path">
        <pathelement location="${classOutputDir}/classes" />
        <pathelement location="${classOutputDir}/test-classes" />
        <pathelement location="lib/junit-4.9.jar" />

</path>

現在,假設我要更改它以過濾掉某些類。 例如,我只想包含名稱以“ Partially”開頭的測試類:

<path id="test.path">
        <pathelement location="${classOutputDir}/classes" />
        <fileset dir="${classOutputDir}/test-classes">
            <include name="**/Partially*.class" />
            <exclude name="**/ExcludedTest*.class" />
        </fileset>
        <pathelement location="lib/junit-4.9.jar" />

</path>

不幸的是,此解決方案給了我以下錯誤:

pit:
   [pitest] Exception in thread "main" org.pitest.util.PitError: error in opening zip file (/root/pitest-ant-example/build/test-classes/com/example/PartiallyTestedTest$1.class)
   [pitest]
   [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.161-b12
   [pitest] Uptime : 354
   [pitest] Input ->
   [pitest] BootClassPathSupported : true
   [pitest]
   [pitest]     at org.pitest.util.Unchecked.translateCheckedException(Unchecked.java:25)
   [pitest]     at org.pitest.classpath.ArchiveClassPathRoot.getRoot(ArchiveClassPathRoot.java:120)
   [pitest]     at org.pitest.classpath.ArchiveClassPathRoot.getData(ArchiveClassPathRoot.java:46)
   [pitest]     at org.pitest.classpath.CompoundClassPathRoot.getData(CompoundClassPathRoot.java:27)
   [pitest]     at org.pitest.classpath.ClassPath.getClassData(ClassPath.java:97)
   [pitest]     at org.pitest.classpath.ClassPathByteArraySource.getBytes(ClassPathByteArraySource.java:41)
   [pitest]     at org.pitest.classinfo.Repository.querySource(Repository.java:82)
   [pitest]     at org.pitest.classinfo.Repository.nameToClassInfo(Repository.java:68)
   [pitest]     at org.pitest.classinfo.Repository.fetchClass(Repository.java:60)
   [pitest]     at org.pitest.mutationtest.config.ConfigurationFactory.createConfiguration(ConfigurationFactory.java:52)
   [pitest]     at org.pitest.mutationtest.config.LegacyTestFrameworkPlugin.createTestFrameworkConfiguration(LegacyTestFrameworkPlugin.java:38)
   [pitest]     at org.pitest.mutationtest.config.SettingsFactory.getTestFrameworkPlugin(SettingsFactory.java:133)
   [pitest]     at org.pitest.mutationtest.config.SettingsFactory.createCoverageOptions(SettingsFactory.java:142)
   [pitest]     at org.pitest.mutationtest.tooling.EntryPoint.execute(EntryPoint.java:80)
   [pitest]     at org.pitest.mutationtest.tooling.EntryPoint.execute(EntryPoint.java:45)
   [pitest]     at org.pitest.mutationtest.commandline.MutationCoverageReport.runReport(MutationCoverageReport.java:87)
   [pitest]     at org.pitest.mutationtest.commandline.MutationCoverageReport.main(MutationCoverageReport.java:45)
   [pitest] Caused by: java.util.zip.ZipException: error in opening zip file
   [pitest]     at java.util.zip.ZipFile.open(Native Method)
   [pitest]     at java.util.zip.ZipFile.<init>(ZipFile.java:225)
   [pitest]     at java.util.zip.ZipFile.<init>(ZipFile.java:155)
   [pitest]     at java.util.zip.ZipFile.<init>(ZipFile.java:169)
   [pitest]     at org.pitest.classpath.ArchiveClassPathRoot.getRoot(ArchiveClassPathRoot.java:118)
   [pitest]     ... 15 more

BUILD FAILED
/root/pitest-ant-example/build.xml:109: /root/pitest-ant-example/build.xml:109: Java returned: 1

Total time: 2 seconds

文件/root/pitest-ant-example/build/test-classes/com/example/PartiallyTestedTest$1.class實際上存在。

我究竟做錯了什么 ? 如何過濾要使用的測試類?

當您從簡單的“路徑元素”更改為更復雜的“文件集”時,您還更改了評估類路徑的時間。

簡單的“ pathelement”僅告訴ant包含一個目錄,但是在定義路徑時沒有查看該目錄。

在第一次使用路徑的那一刻,將評估更復雜的文件集。 在那一刻,內部類(包含$的內部類)不存在。 因此,該類在運行時丟失。

您必須使用技巧,以便在生成內部類之后的正確時間評估路徑。

您無需從類路徑中刪除內容即可選擇要運行的測試或要進行突變的類。 Pitest提供了自己的過濾器。

在最新版本中,這些是

  • targetClasses
  • targetTests
  • excludeClasss
  • 排除測試

每個接受一個glob列表。

此處記錄了Ant插件的用法, 網址為http://pitest.org/quickstart/ant/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM