如何在M1 Apple Silicon环境下禁用JUnit5测试?
在M1环境下禁用特定JUnit5测试的方法
JUnit5本身没有针对M1架构的专属禁用注解,但可以通过以下两种方式实现需求:
直接用@DisabledIf注解判断系统架构
借助JVM的系统属性os.arch识别M1环境(M1对应的架构值通常是arm64或aarch64,不同JDK版本可能有差异),给目标测试方法添加该注解即可:import org.junit.jupiter.api.DisabledIf; import org.junit.jupiter.api.Test; public class SampleTest { @Test @DisabledIf( value = "#{systemProperties['os.arch'].toLowerCase().contains('arm64') || systemProperties['os.arch'].toLowerCase().contains('aarch64')}", reason = "M1架构下禁用此测试" ) void testNotRunOnM1() { // 你的测试代码 } }封装自定义复用注解
如果多个测试都需要在M1环境下禁用,可以封装一个自定义注解,避免重复编写判断条件:import org.junit.jupiter.api.DisabledIf; import java.lang.annotation.*; @Target({ElementType.METHOD, ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @DisabledIf( value = "#{systemProperties['os.arch'].toLowerCase().matches('arm64|aarch64')}", reason = "该测试在M1架构环境下禁用" ) public @interface DisabledOnM1 { }使用时直接在测试方法或类上标注:
@Test @DisabledOnM1 void testDisabledOnM1() { // 你的测试代码 }
注意:部分JDK在M1设备上返回的架构标识可能是aarch64,所以条件里同时包含两种值能覆盖更多场景。
内容的提问来源于stack exchange,提问作者pixel
相关产品推荐
相关产品推荐

