@ Before,@ BeforeClass,@ BeforeEach和@BeforeAll

@ Before,@ BeforeClass,@ BeforeEach和@BeforeAll之间的区别

两者之间的主要区别是什么

  • @Before 和 @BeforeClass

    • 在JUnit 5 @BeforeEach@BeforeAll

  • @After 和 @AfterClass

根据JUnit Api @Before用于以下情况:

编写测试时,通常会发现多个测试需要在运行之前创建类似的对象。

@BeforeClass可用于建立数据库连接。但不能@Before做同样的事情?


呼啦一阵风
浏览 1317回答 3
3回答

米琪卡哇伊

标记的代码@Before在每次测试之前执行,而@BeforeClass在整个测试夹具之前运行一次。如果您的测试类有十个测试,@Before代码将执行十次,但@BeforeClass只执行一次。通常,@BeforeClass当多个测试需要共享相同的计算昂贵的设置代码时,您使用。建立数据库连接属于此类别。您可以将代码@BeforeClass移入@Before,但您的测试运行可能需要更长时间。请注意,标记的代码@BeforeClass作为静态初始化程序运行,因此它将在创建测试夹具的类实例之前运行。在JUnit的5,标签@BeforeEach和@BeforeAll是等价@Before和@BeforeClassJUnit 4中他们的名字是多一点表明它们在运行时的,松散的解释:“以前每次测试”和“一旦所有测试之前”。

万千封印

JUnit中的BeforeClass和BeforeClass函数@Before注释将在具有@Test注释的类中的每个测试函数之前执行,但函数@BeforeClass将仅在类中的所有测试函数之前执行一次。类似地,@After具有@Test注释的函数@AfterClass将在具有注释的类中的每个测试函数之后执行,但是函数将仅在类中的所有测试函数之后执行一次。SampleClasspublic class SampleClass {     public String initializeData(){         return "Initialize";     }     public String processDate(){         return "Process";     }  }SampleTestpublic class SampleTest {     private SampleClass sampleClass;     @BeforeClass     public static void beforeClassFunction(){         System.out.println("Before Class");     }     @Before     public void beforeFunction(){         sampleClass=new SampleClass();         System.out.println("Before Function");     }     @After     public void afterFunction(){         System.out.println("After Function");     }     @AfterClass     public static void afterClassFunction(){         System.out.println("After Class");     }     @Test     public void initializeTest(){         Assert.assertEquals("Initailization check", "Initialize", sampleClass.initializeData() );     }     @Test     public void processTest(){         Assert.assertEquals("Process check", "Process", sampleClass.processDate() );     }}产量Before ClassBefore FunctionAfter FunctionBefore FunctionAfter FunctionAfter Class在Junit 5@Before = @BeforeEach@BeforeClass = @BeforeAll@After = @AfterEach@AfterClass = @AfterAll
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java