使用Junit 5仅运行测试套件中的特定方法

sf6xfgos  于 2022-11-11  发布在  其他
关注(0)|答案(1)|浏览(128)

我有2个测试类(A,B),都有3个测试方法。我把它们放到一个测试套件中,只想运行特定的方法(例如:对于junit 4中的这个用例,我有自定义的runner,这是通过将Runner传递到@RunWith(CustomRunner.class)来完成的。
我正在尝试将我的junit 4测试套件迁移到junit 5测试套件中。我已经创建了一个测试套件:

import org.junit.platform.suite.api.IncludeTags;
import org.junit.platform.suite.api.SelectPackages;
import org.junit.platform.suite.api.Suite;

@SelectClasses({com.example.junit5testexample.A.class,
com.example.junit5testexample.B.class})
@Suite
@SuiteDisplayName("junit5 suite")
public class JUnit5TestSuiteExample {

}

我现在如何过滤方法?我应该使用Extensions和@ExtendWith吗?如果是,你会推荐哪个扩展?

i7uaboj4

i7uaboj41#

尝试提供实现ExecutionCondition的自定义类,但这不起作用,我不知道为什么。是我遗漏了什么还是整个方法都错了?

public class RunMethodCondition implements ExecutionCondition { 

    @Override 
    public ConditionEvaluationResult evaluateExecutionCondition(ExtensionContext context){
        final Method testedMethod = context.getTestMethod().get();
        if(testedMethod.getName()=="Atest1"){
            return ConditionEvaluationResult.enabled("enabled");
        }
        return ConditionEvaluationResult.disabled("disabled");
    }

}

和我的测试套件:

@SelectClasses({com.example.junit5testexample.A.class,
com.example.junit5testexample.B.class})
@Suite
@ExtendWith(RunMethodCondition.class)
public class JUnit5TestSuiteExample {

}

从junit文档:“计算ExecutionCondition以确定是否应基于提供的ExtensionContext执行给定的容器或测试。”

相关问题