作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
为什么不使用这些 JUnit 4 注释,我们为什么不使用静态和实例初始化程序 block 呢?以下代码显示只要静态初始化程序 block 运行,@BeforeClass 方法就会运行,而当实例初始化程序 block 运行时,@Before 方法就会运行。那么我们为什么需要它们?
public class DemoTest {
static {
System.out.println("init static");
}
{
System.out.println("init instance");
}
@BeforeClass
public static void setUpAll() {
System.out.println("beforeClass");
}
@Before
public void setUp() {
System.out.println("before");
}
@Test
public void test1() {
System.out.println("test1");
}
@Test
public void test2() {
System.out.println("test2");
}
}
最佳答案
如果您的测试用例不需要 @Before
等提供的附加功能,您当然可以自由使用它们。
由于您不能使用这些结构做与@After
和@AfterClass
相同的事情,但是对称性是有意义的,以相同格式包含它们的可重用性和可读性。
此外,对于诸如 @Rule
和 @ClassRule
注释字段(以及 @Mock
注释,如果您使用 MockitoJUnit4Runner
或 @Autowired
如果您使用的是 SpringJUnitRunner
),这些保证在您输入适当的 @Before 时已经初始化
等JUnit中的方法。如果您使用的是静态/实例初始化程序 block ,则没有这样的保证(事实上,可以保证它们不会)。
关于java - @Before 和@BeforeClass 有什么意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58290805/
我是一名优秀的程序员,十分优秀!