当前位置:  开发笔记 > 编程语言 > 正文

如何在Intellij中定义运行junit测试的顺序?

如何解决《如何在Intellij中定义运行junit测试的顺序?》经验,为你挑选了2个好方法。

我有一个片状的junit测试,只有在我运行所有测试时才会失败.我认为一个测试导致另一个测试失败,我想在我尝试修复它之前证明它.

如果我运行所有测试,它会运行"错误设置",然后运行"错误设置后失败的测试".它还会在两者之间运行许多无关紧要的慢速测试.但是,如果我使用一个模式只运行这两个,它运行"测试失败后设置失败"然后"错误设置".结果,两个都通过了.

如何按顺序运行"错误设置"和"在错误设置后测试失败"?



1> Ali Dehghani..:

根据JUnit的维基:

根据设计,JUnit不指定测试方法调用的执行顺序.到目前为止,这些方法只是按反射API返回的顺序调用.但是,使用JVM顺序是不明智的,因为Java平台没有指定任何特定顺序,实际上JDK 7会返回或多或少的随机顺序.当然,编写良好的测试代码不会假设任何顺序,但有些会这样做,并且可预测的故障优于某些平台上的随机故障.

从版本4.11开始,JUnit将默认使用确定性但不可预测的顺序(MethodSorters.DEFAULT).要更改测试执行顺序,只需使用@FixMethodOrder注释您的测试类,并指定一个可用的MethodSorters:

@FixMethodOrder(MethodSorters.JVM):按JVM返回的顺序保留测试方法.此订单可能因运行而异.

@FixMethodOrder(MethodSorters.NAME_ASCENDING):按字典顺序按方法名称对测试方法进行排序.

您可以使用MethodSorters.NAME_ASCENDING和更改方法名称以匹配您的特定订单.我知道你只是为了调试而使用它,但它依赖于你的测试方法执行顺序是一个测试气味而JUnit没有提供对测试方法执行顺序更精细的颗粒控制



2> Abish R..:

如Ali Dehghani所说,您可以通过以下命令命令执行测试方法

@FixMethodOrder(MethodSorters.NAME_ASCENDING):按字典名称按方法名称对测试方法进行排序。

码:

@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class ApplicationTest extends ActivityInstrumentationTestCase2 {

    public ApplicationTest() {
        super(MainActivity.class);
    }

    @Rule
    public ActivityTestRule mActivityTestRule = new ActivityTestRule<>(MainActivity.class);

    @Test
    void t1AttachUI(){
        // testing code goes here
    }

    @Test
    void t2InitializeViews(){
        // testing code goes here
    };

    @Test
    void t3SettingValues(){
        // testing code goes here
    };

    @Test
    void t4Validation(){
        // testing code goes here
    };

    @Test
    void t3AfterButtonPress(){
        // testing code goes here
    };
}


这对这种情况没有帮助,因为此问题涉及多个类。
推荐阅读
kikokikolove
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有