当前位置: 首页 > 面试题库 >

使用具有surefire和failsafe功能的预览功能运行测试时出现问题

危钱明
2023-03-14
问题内容

我正在尝试使用将项目迁移到Java 12 --enable-preview

--enable-preview在编译器设置中添加了:

        <plugin>                                                            
            <artifactId>maven-compiler-plugin</artifactId>                  
            <version>3.8.0</version>                                        
            <configuration>                                                 
                <release>12</release>                          
                <compilerArgs>                                                                                  
                    <arg>--enable-preview</arg>                             
                </compilerArgs>                                                                      
            </configuration>                                                
        </plugin>

并在argLine中添加了它,以确保surefire和failsafe:

<properties>                                                                                             
    <argLine>--enable-preview</argLine>                        
</properties>

mvn clean verify得出以下结果:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:3.0.0-M3:test (default-test) on project lombok-jdk10: Execution default-test of goal org.apache.maven.plugins:maven-surefire-plugin:3.0.0-M3:test failed: java.lang.UnsupportedClassVersionError: Preview features are not enabled for com/kirela/lombok/BarTest (class file version 56.65535). Try running with '--enable-preview' -> [Help 1]

我也尝试将argLine直接添加到surefire / failsafe配置中,但是结果是相同的。

我在这里想念什么?

我这是surefire / failsafe中的错误吗?

EDIT2:Surefire和故障安全配置:

        <plugin>                                                            
            <groupId>org.apache.maven.plugins</groupId>                     
            <artifactId>maven-surefire-plugin</artifactId>                  
            <version>3.0.0-M3</version>                                     
            <configuration>                                                 
                <forkCount>2</forkCount>                                    
            </configuration>                                                
        </plugin>                                                           
        <plugin>                                                            
            <groupId>org.apache.maven.plugins</groupId>                     
            <artifactId>maven-failsafe-plugin</artifactId>                  
            <version>3.0.0-M3</version>                                     
            <executions>                                                    
                <execution>                                                 
                    <goals>                                                 
                        <goal>integration-test</goal>                       
                        <goal>verify</goal>                                 
                    </goals>                                                
                </execution>                                                
            </executions>                                                   
            <configuration>                                                 
                <forkCount>2</forkCount>                                    
            </configuration>                                                                                                                              
        </plugin>

EDIT3:最小的工作示例在这里:https :
//github.com/krzyk/lombok-jdk10-example

该项目失败,出现--enable-preview,但将其删除后可以正常工作。


问题答案:

有两种解决方案:

添加--enable-previewMAVEN_OPTS环境变量。

surefire的维护者解释:

argLine可以做的事情没有任何问题。该插件运行JUnit过滤器,该过滤器最终选择相关的类以在一个或多个JVM中运行。因此,JUnit引擎运行两次。一次在插件JVM中,第二次在分叉JVM中。

由于这些类使用与Maven中Java运行时支持的版本不同的主要或次要版本(*
.class文件的字节码)进行编译,因此此JRE失败,因为Maven中的Java无法理解字节码。因此,奇怪的是,同一JVM(javac)根据JVM选项产生了两个主要版本,而来自同一JVM的java不理解它本身是不兼容的。尽管分叉JVM中的版本非常好,并且可以理解javac编译的类,因为javac和分叉JVM以相同的选项
–enable-preview开头。这与使用工具链通过maven-compiler-plugin使用Java 12编译源代码并使用Java
11运行整个Maven构建情况相同。因此,将使用比JRE更高的版本(以字节码)编译类。了解Maven流程。

我们希望对提供者进行返工并在派生的JVM中执行过滤,但这是非常复杂的更改,仍然存在疑问。

问题是我使用过forkCount,看来surefire不会将参数传递给fork中运行的JVM。

forkCount 从surefire / failsafe配置中删除该参数

当然,这将导致测试在单个JVM中运行,因此,如果您想使用fork来加速测试,那么它将无法正常工作。



 类似资料:
  • 并在argLine中添加了它,以确保Fire和FailSafe: 并对结果: 我还尝试将argLine直接添加到SureFire/FailSafe配置中,但结果是一样的。 Edit3:最小的工作示例如下:https://github.com/krzyk/lombok-jdk10-example 项目在时失败,但在删除它时工作。

  • 问题内容: 我一直在寻找在osx中​​进行无头测试的解决方案。但是我需要能够保存服务器返回的文件。 我已经测试了selenium,phantomjs,casperjs,并研究了可以在网上找到的任何东西。 他们都不支持下载。我错过了什么吗?有没有无头的浏览器/测试框架支持下载? 问题答案: 您可以做的是: 启动 虚拟显示 (请参阅Xvfb) 使用配置为 自动保存 文件的 首选项启动浏览器 __带有附

  • 在JDK/12 EarlyAccess Build10中,JEP-325开关表达式已经作为预览特性集成在JDK中。表达式的示例代码(在JEP中也是如此): 其中作为枚举

  • 本文向大家介绍JS使用H5实现图片预览功能,包括了JS使用H5实现图片预览功能的使用技巧和注意事项,需要的朋友参考一下 JS使用H5实现上传图片预览的功能,以下是代码的实现: 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • 主要内容:功能测试的目标功能测试是软件测试的一个分支,旨在验证软件应用程序的功能,而不管功能是否根据需求规范运行。通过给出适当的输入值,确定输出并使用预期输出验证实际输出来测试每个功能。 功能测试包括通过GUI(图形用户界面),API(应用程序接口),安全性,数据库,客户端应用程序,服务器应用程序和应用程序功能进行测试。黑盒测试方法用于功能测试,其中测试内部逻辑的工作而不窥视内部代码。 功能测试的目标 功能测试的目标是检

  • 功能测试从用户的角度验证场景。它类似于验收测试。 但是它不是通过 HTTP 进行通信,而是填充环境,如(填充)POST 和 GET 参数, 然后直接在代码里执行 Application 实例。 功能测试通常比验收测试快,并且在失败时提供详细的堆栈跟踪。 根据老司机的经验,功能测试应该是首选的,除非有专门的 Web 服务器设置 或者由 JavaScript 构建的复杂 UI。 功能测试是借助于具有良