簡體   English   中英

JUnit 中這兩個版本的代碼有什么區別?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM