Một Test Case để minh họa điều này:
Mã Java với một phương pháp kê khai vararg chép (mà sẽ xảy ra là tĩnh):
public class JavaReceiver {
public static String receive(String... x) {
String res = ((x == null) ? "null" : ("an array of size " + x.length));
return "received 'x' is " + res;
}
}
Mã Java này (trường hợp kiểm tra JUnit4) gọi ở trên (chúng tôi đang sử dụng trường hợp kiểm tra để không kiểm tra bất kỳ điều, chỉ để tạo ra một số lượng):
import org.junit.Test;
public class JavaSender {
@Test
public void sendNothing() {
System.out.println("sendNothing(): " + JavaReceiver.receive());
}
@Test
public void sendNullWithNoCast() {
System.out.println("sendNullWithNoCast(): " + JavaReceiver.receive(null));
}
@Test
public void sendNullWithCastToString() {
System.out.println("sendNullWithCastToString(): " + JavaReceiver.receive((String)null));
}
@Test
public void sendNullWithCastToArray() {
System.out.println("sendNullWithCastToArray(): " + JavaReceiver.receive((String[])null));
}
@Test
public void sendOneValue() {
System.out.println("sendOneValue(): " + JavaReceiver.receive("a"));
}
@Test
public void sendThreeValues() {
System.out.println("sendThreeValues(): " + JavaReceiver.receive("a", "b", "c"));
}
@Test
public void sendArray() {
System.out.println("sendArray(): " + JavaReceiver.receive(new String[]{"a", "b", "c"}));
}
}
Chạy này như một sản lượng kiểm tra JUnit:
sendNothing(): received 'x' is an array of size 0
sendNullWithNoCast(): received 'x' is null
sendNullWithCastToString(): received 'x' is an array of size 1
sendNullWithCastToArray(): received 'x' is null
sendOneValue(): received 'x' is an array of size 1
sendThreeValues(): received 'x' is an array of size 3
sendArray(): received 'x' is an array of size 3
Để làm điều này thú vị hơn, chúng ta hãy gọi chức năng từ Groovy 2.1.2 và xem những gì xảy ra. Nó chỉ ra rằng các kết quả không giống nhau! Đây có thể là một lỗi mặc dù.
import org.junit.Test
class GroovySender {
@Test
void sendNothing() {
System.out << "sendNothing(): " << JavaReceiver.receive() << "\n"
}
@Test
void sendNullWithNoCast() {
System.out << "sendNullWithNoCast(): " << JavaReceiver.receive(null) << "\n"
}
@Test
void sendNullWithCastToString() {
System.out << "sendNullWithCastToString(): " << JavaReceiver.receive((String)null) << "\n"
}
@Test
void sendNullWithCastToArray() {
System.out << "sendNullWithCastToArray(): " << JavaReceiver.receive((String[])null) << "\n"
}
@Test
void sendOneValue() {
System.out << "sendOneValue(): " + JavaReceiver.receive("a") << "\n"
}
@Test
void sendThreeValues() {
System.out << "sendThreeValues(): " + JavaReceiver.receive("a", "b", "c") << "\n"
}
@Test
void sendArray() {
System.out << "sendArray(): " + JavaReceiver.receive(["a", "b", "c"] as String[]) << "\n"
}
}
Chạy thử này như một thử nghiệm JUnit cho kết quả như sau, với sự khác biệt với Java được in đậm.
sendNothing(): received 'x' is an array of size 0
sendNullWithNoCast(): received 'x' is null
sendNullWithCastToString(): received 'x' is null
sendNullWithCastToArray(): received 'x' is null
sendOneValue(): received 'x' is an array of size 1
sendThreeValues(): received 'x' is an array of size 3
sendArray(): received 'x' is an array of size 3
Sẽ hữu ích cho người khác nếu bạn đã liệt kê phương thức 'asList' trong mẫu và mục đích của nó. –
@ArunKumar 'asList()' là một nhập tĩnh từ lớp 'java.util.Arrays'. Tôi chỉ cho rằng điều đó là hiển nhiên. Mặc dù bây giờ tôi đang nghĩ về nó, tôi có lẽ nên đã chỉ sử dụng 'Arrays.toString()' vì lý do duy nhất nó được chuyển đổi sang một danh sách là vì vậy nó sẽ in đẹp. –