[英]What is the difference between these two versions of code in JUnit?
Junit中的代碼有什么區別:
class MethodsTest {
Methods methods = new Methods();
}
還有這些:
class MethodsTest {
Methods methods;
@BeforeEach
void init() {
methods = new Methods();
}
}
何時使用第一個代碼,何時使用第二個代碼?
在第一個版本中,您希望您使用的特定測試運行器正在創建一個新的MethodsTest
實例,在執行特定測試時隱式地創建一個新的Methods
實例。 在第二個版本中,您告訴測試運行器您在執行新測試時顯式使用它來創建新的Methods
實例。
如果不涉及繼承,則沒有區別。
如果您要擴展MethodsTest
類,則可以覆蓋init()
方法,並且覆蓋方法不一定會直接初始化該字段,或者可能通過調用super.init()
間接初始化該字段; 或者它可以以不同的方式初始化它。
就我個人而言,我更喜歡第一個。 它更簡潔,不可覆蓋,其語義對於熟悉 Java 的任何人來說都是顯而易見的,即使沒有特定於 JUnit 的知識。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.