Bunu açıklayan bir Test Senaryosu:
Vararg alma yöntemi bildirimine sahip Java kodu (statiktir):
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;
}
}
Bu Java kodu (bir JUnit4 test durumu) yukarıdakileri çağırır (test senaryosunu hiçbir şeyi test etmemek, sadece bazı çıktılar oluşturmak için kullanıyoruz):
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"}));
}
}
Bunu bir JUnit testi olarak çalıştırmak:
sendNothing (): alınan 'x', 0 boyutunda bir dizidir
sendNullWithNoCast (): alınan 'x' boş
sendNullWithCastToString (): alınan 'x' 1 boyutunda bir dizidir
sendNullWithCastToArray (): alınan 'x' boş
sendOneValue (): alınan 'x' 1 boyutunda bir dizidir
sendThreeValues (): alınan 'x' 3 boyutlu bir dizidir
sendArray (): alınan 'x' 3 boyutlu bir dizidir
Bunu daha ilginç hale getirmek için receive()
Groovy 2.1.2'deki fonksiyonu çağıralım ve ne olacağını görelim. Sonuçların aynı olmadığı ortaya çıktı! Yine de bu bir hata olabilir.
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"
}
}
Bunu bir JUnit testi olarak çalıştırmak, Java farkı kalın harflerle vurgulanarak aşağıdakileri verir.
sendNothing (): alınan 'x', 0 boyutunda bir dizidir
sendNullWithNoCast (): alınan 'x' boş
sendNullWithCastToString (): alınan 'x' boş
sendNullWithCastToArray (): alınan 'x' boş
sendOneValue (): alınan 'x' 1 boyutunda bir dizidir
sendThreeValues (): alınan 'x' 3 boyutlu bir dizidir
sendArray (): alınan 'x' 3 boyutlu bir dizidir
asList
Örnekte yöntemi ve amacını listelemiş olsaydınız başkalarına yardımcı olabilirdi .