Özel durum JUnit test için kötü formu?
JUnit için oldukça yeniyim, ve gerçekten en iyi uygulamalar, özel durumlar ve özel durum işleme için ne bilmiyorum.
Örneğin, bir IP adresi sınıf testleri yazıyorum diyelim. Eğer Adres boş ise bir İnvalidİPAddressException yapacağına yapıcı bir IP adresi(String Adres) vardır. Etrafında googling söyleyebilirim kadarıyla, boş parametre için test gibi olacaktır.
@Test
public void testNullParameter()
{
try
{
IPAddress addr = new IPAddress(null);
assertTrue(addr.getOctets() == null);
}
catch(InvalidIPAddressException e)
{
return;
}
fail("InvalidIPAddressException not thrown.");
}
Bu durumda,/catch istisna geliyor biliyorum çünkü mantıklı.
Ama şimdi Eğer testValidİPAddress yazmak istiyorum, birkaç yolu bunu yapmak için vardır:
#1:
@Test
public void testValidIPAddress() throws InvalidIPAddressException
{
IPAddress addr = new IPAddress("127.0.0.1");
byte[] octets = addr.getOctets();
assertTrue(octets[0] == 127);
assertTrue(octets[1] == 0);
assertTrue(octets[2] == 0);
assertTrue(octets[3] == 1);
}
#2:
@Test
public void testValidIPAddress()
{
try
{
IPAddress addr = new IPAddress("127.0.0.1");
byte[] octets = addr.getOctets();
assertTrue(octets[0] == 127);
assertTrue(octets[1] == 0);
assertTrue(octets[2] == 0);
assertTrue(octets[3] == 1);
}
catch (InvalidIPAddressException e)
{
fail("InvalidIPAddressException: " e.getMessage());
}
}
Standart uygulamadır beklenmedik durumlar JUnit atmak için veya sadece onlarla başa çıkmak kendine?
Yardım için teşekkürler.
CEVAP
Aslında, eski stilözel durum testiistisna atar kod etrafında bir try sarmak için ve daha sonra deneyin bloğu sonunda fail()
bir açıklama ekleyin. Şöyle bir şey:
public void testNullParameter() {
try {
IPAddress addr = new IPAddress(null);
fail("InvalidIPAddressException not thrown.");
} catch(InvalidIPAddressException e) {
assertNotNull(e.getMessage());
}
}
Bu kadar ne yazdın ama farklı değil
assertTrue(addr.getOctets() == null);
işe yaramaz.- Bu niyet ve sözdizimi daha net IMO ve böylece okuması daha kolay.
Yine de, bu biraz çirkin. Ama bu durum, test JUnit 4 en büyük gelişmelerden biri olarak JUnit 4 kurtarmaya gelir yerdir. 4, şimdi test yazabilirsiniz JUnit ile bu gibi:
@Test (expected=InvalidIPAddressException.class)
public void testNullParameter() throws InvalidIPAddressException {
IPAddress addr = new IPAddress(null);
}
Güzel, değil mi?
Şimdi, ilgili asıl soru, Eğer böyle bir beklentim yok bir istisna olmak atılmış, bence kesinlikle gitmek için yolu #1 (çünkü daha az ayrıntılı) ve izin JUnit özel durum işlenecek ve başarısız test olarak bekleniyor.
Nasıl özel yöntemleri, alanları veya i...
Nasıl belirli bir durum JUnit 4 Test a...
Nasıl bir özel durum olduğunu doğrulam...
Özel bir yöntem kamu test birimi için....
Sistem için JUnit test.dışarı.()sertif...