簡體   English   中英

為什么 java 代碼沒有顯示正確數量的實例?

[英]Why the java code isn't showing proper number of instances?

我正在關注 freecodecamp 上的Java 教程,並編寫了以下代碼。 在這里,我創建了兩個類:PersonTest.java 和 Person.java。 我在 PersonTest.java 中編寫了 3 個測試。 在編寫前兩個測試時,創建了 Person class 的兩個實例。 在計算創建的實例數的第三個測試中; 我得到 output 作為 1(我希望它是 2)。 我不明白為什么會這樣顯示。 任何幫助表示贊賞:)

PersonTest.java

package com.atharvajoshi.javacourse.lesson2;
import static org.junit.Assert.assertEquals;
import org.junit.Test;

public class PersonTest {
    @Test
    public void shouldReturnHelloWorld() {
        Person atharva = new Person();                  // First instance
        assertEquals("Hello World", atharva.helloworld());
    }

    @Test
    public void shouldReturnHelloAtharva() {
        Person person = new Person();                   // Second instance
        assertEquals("Hello Atharva", person.hello("Atharva"));
    }


    @Test
    public void shouldReturnNumberOfPersons() {
        System.out.println(Person.numberOfPersons());   // Answer is coming to be 1
        assertEquals(2, Person.numberOfPersons());      // Test failed
    }
}

人.java

package com.atharvajoshi.javacourse.lesson2;

public class Person {

    private static int personCounter = 0;

    public Person() {
        personCounter ++;
    }

    public String helloworld() {
        return "Hello World";
    }

    public String hello(String anyName) {
        return "Hello " + anyName;
    }

    public static int numberOfPersons() {
        return personCounter;
    }
}

Output: 1

Output

如果您未在 JUnit 中指定順序,則測試的執行順序是任意的。 為了可視化這一點,在您的代碼中添加一個“內部方法 XX”的系統輸出。 如果你用的是IDE,加個調試器調試PersonTest java class,你就知道執行順序是任意的。 如果您使用 junit 4.x 及更高版本,請嘗試此注釋

@FixMethodOrder(MethodSorters.NAME_ASCENDING)

這將按照方法名稱的字母順序執行測試用例

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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