SORU
18 EYLÜL 2008, PERŞEMBE


Birim bir Java Sunucu uygulaması test

Bir sunucu birim testi yapmak için en iyi yolu ne olacağını bilmek istiyorum.

İç sınama yöntemleri bir sorun olarak olabileceği gibi, bakın sunucu uygulaması kapsamında, ama ne test doGet/doPost yöntemleri yanı sıra iç yöntem için başvuruda bulunan içerik veya kullanım oturumu parametreleri?

Bir şekilde JUnit veya tercihen Eğer gibi sadece kullanarak bu klasik araçlara ilgisi var mı? Tomcat sunucusu ya da böyle bir şey gömmek lazım?

CEVAP
18 EYLÜL 2008, PERŞEMBE


Entegrasyon Testleri' saf Birim Testleri. yerine üzerinden Servlet ve JSP ben test En JUnit/Eğer mevcut dahil olmak üzere eklentileri çok sayıda vardır:

  • HttpUnit (veya sizin ihtiyaçlarınıza bağlı olarak iyi kötü olan ve en iyi bilinen, çok eski düşük seviye)
  • 3* *(birçok proje için hangisi daha iyi HttpUnit, daha yüksek seviye)
  • 4* *(diğer test araçları üstüne oturur ve onları kolaylaştırmak için çalışır - tercih ederim
  • WatiJ ve Selenyum (tarayıcınızı daha ağır ama gerçekçi olan test yapmak için kullanın)

Bu formdan giriş işlemleri basit bir Sipariş İşleme Sunucu uygulaması için JWebUnit bir test olduğunu yazmışsınız. orderentry.html Bir müşteri no, müşteri adı ve bir veya daha fazla sipariş öğeleri umuyor:

public class OrdersPageTest {
    private static final String WEBSITE_URL = "http://localhost:8080/demo1";

    @Before
    public void start() {
        webTester = new WebTester();
        webTester.setTestingEngineKey(TestingEngineRegistry.TESTING_ENGINE_HTMLUNIT);
        webTester.getTestContext().setBaseUrl(WEBSITE_URL);
    }
    @Test
    public void sanity() throws Exception {
        webTester.beginAt("/orderEntry.html");
        webTester.assertTitleEquals("Order Entry Form");
    }
    @Test
    public void idIsRequired() throws Exception {
        webTester.beginAt("/orderEntry.html");
        webTester.submit();
        webTester.assertTextPresent("ID Missing!");
    }
    @Test
    public void nameIsRequired() throws Exception {
        webTester.beginAt("/orderEntry.html");
        webTester.setTextField("id","AB12");
        webTester.submit();
        webTester.assertTextPresent("Name Missing!");
    }
    @Test
    public void validOrderSucceeds() throws Exception {
        webTester.beginAt("/orderEntry.html");
        webTester.setTextField("id","AB12");
        webTester.setTextField("name","Joe Bloggs");

        //fill in order line one
        webTester.setTextField("lineOneItemNumber", "AA");
        webTester.setTextField("lineOneQuantity", "12");
        webTester.setTextField("lineOneUnitPrice", "3.4");

        //fill in order line two
        webTester.setTextField("lineTwoItemNumber", "BB");
        webTester.setTextField("lineTwoQuantity", "14");
        webTester.setTextField("lineTwoUnitPrice", "5.6");

        webTester.submit();
        webTester.assertTextPresent("Total: 119.20");
    }
    private WebTester webTester;
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Andrew_Huang

    Andrew_Huang

    10 ŞUBAT 2006
  • Subscribe!!

    Subscribe!!

    3 EKİM 2009
  • TheDroidDemos

    TheDroidDemo

    15 ŞUBAT 2011