[英]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
如果您未在 JUnit 中指定順序,則測試的執行順序是任意的。 為了可視化這一點,在您的代碼中添加一個“內部方法 XX”的系統輸出。 如果你用的是IDE,加個調試器調試PersonTest java class,你就知道執行順序是任意的。 如果您使用 junit 4.x 及更高版本,請嘗試此注釋
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
這將按照方法名稱的字母順序執行測試用例
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.