Junit 5 使用某些类中的 @Tag 进行订单测试

问题描述 投票:0回答:3

我有一些课程。 我都上课,我有一些测试。 示例:

public class testpage1(){

@test
@Tag("Regression")
void test1(){
   system.out.println("Test1");
}

void test2(){
   system.out.println("Test2");
}

   }

public class testpage2(){

@test
@Tag("Regression")
void test3(){
   system.out.println("Test3");
 }

void test4(){
   system.out.println("Test4");
   }

}

public class testpage3(){

@test
@Tag("Regression")
void test5(){
   system.out.println("Test5");
   }

void test6(){
   system.out.println("Test6");
  }

}

我还有其他课程要上:

@RunWith(value = JunitPlatform.class)
@IncludeTags(value = {"Regression"})

当我上这门课时, 无需任何命令即可试运行,

如何命令测试按照我想要的顺序运行?

java selenium junit tags junit5
3个回答
0
投票

使用 Junit 通常,测试方法将按照其名称的顺序执行,并按升序排序。

或者您可以使用注释@Order指定订单 @订单(1) @订单(2) ...


0
投票

jUnit5 允许您使用

@Order()
注释设置测试执行顺序。
因此,您可以在代码中添加这些注释,如下所示:

public class testpage1(){

@test
@Order(1)
@Tag("Regression")
void test1(){
   system.out.println("Test1");
}

void test2(){
   system.out.println("Test2");
}

   }

public class testpage2(){

@test
@Order(2)
@Tag("Regression")
void test3(){
   system.out.println("Test3");
 }

void test4(){
   system.out.println("Test4");
   }

}

public class testpage3(){

@test
@Order(3)
@Tag("Regression")
void test5(){
   system.out.println("Test5");
   }

void test6(){
   system.out.println("Test6");
  }

}

这应该使这些测试相应地执行


0
投票

我认为您在问题中解决了两个问题:

  1. 测试类中的测试顺序
  2. 跨测试类的测试顺序

一种可能的解决方案是使用嵌套类进行测试(如果测试位于同一文件中)。

import org.junit.jupiter.api.MethodOrderer.OrderAnnotation;
import org.junit.jupiter.api.Order;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.TestClassOrder;
import org.junit.jupiter.api.TestMethodOrder;

@TestMethodOrder(OrderAnnotation.class)
@TestClassOrder(org.junit.jupiter.api.ClassOrderer.OrderAnnotation.class)
public class SimpleOrderTest {

   @Nested
   @Order(2)
   class NestedTestclass1Test {

      @Test
      @Order(1)
      void test1() {
         System.out.println("Test1");
      }

      @Test
      @Order(2)
      void test2() {
         System.out.println("Test2");
      }
   }

   @Order(1)
   @Nested
   class NestedTestclass2Test {

      @Test
      @Order(1)
      void test3() {
         System.out.println("Test3");
      }

      @Test
      @Order(2)
      void test4() {
         System.out.println("Test4");
      }
   }
}
© www.soinside.com 2019 - 2024. All rights reserved.