我已经编写了一个自定义的JUnit 5测试引擎,用于在测试类级别进行参数化测试。
当使用IntelliJ并运行测试类时,一切正常。
IntelliJ test window when running test class
当我运行一个特定的参数时,一切都正常...
IntelliJ test window when running test parameter的
当我为一个特定的参数运行一个特定的方法时,所有的测试方法都会运行...
IntelliJ test window when running test method的
层次结构中的每个节点都有一个UniqueId
,所以我希望IntelliJ使用一个UniqueIdSelector
,但调试显示它使用的是一个MethodSelector
Engine Discovery Request的
如果方法有参数,那么我可以使用methodParameterType
字段来过滤.但是在这个场景中,没有测试方法参数。
有什么想法?有人遇到过这个问题吗?它是一个核心的IntelliJ问题/限制还是JUnit 5问题/限制?
1条答案
按热度按时间x4shl7ld1#
我也遇到了同样的问题。通过查看IntelliJ的源代码,我发现了两个让IntelliJ使用
UniqueIdSelector
的解决方案。1.使用一个
MethodSource
或ClassSource
,它指向一个用@Testable
注解的方法或类。1.使用与父节点相同的源。例如,您可以使每个测试使用测试类作为源,而不是单独的方法。
当然,这两种解决方案都有缺点。删除
@Testable
注解意味着您不能再从IntelliJ中的源文件触发测试。使用类作为所有节点的测试源意味着您不能再跳转到源代码中的方法。PS:我假设你已经创建了IDEA-317561?我也创建了IDEA-337243。仅供参考。