Vra

Ek het 'n klomp van die servlets hardloop onder die Tomcat Servlet houer. Ek sou graag wou toets kode skei van produksie kode, so ek oorweeg die gebruik van 'n toets raamwerk. JUnit is mooi geïntegreer in Eclipse, maar ek kon nie maak dit hardloop servlets met behulp van 'n lopende Tomcat server. Kan jy asseblief beveel 'n eenheid toets raamwerk wat die toets Tomcat servlets ondersteun? Eclipse integrasie is mooi, maar nie nodig nie.

Was dit nuttig?

Oplossing

Kyk bietjie na ServletUnit , wat deel is van HttpUnit. In 'n neutedop, ServletUnit bied 'n biblioteek van spot en utilities wat jy kan in gewone JUnit toetse gebruik om Hom te bespot uit 'n Servlet houer en ander Servlet verwante voorwerpe soos versoek en reaksie voorwerpe. Die skakel hierbo bevat voorbeelde.

Ander wenke

Die lente raamwerk lekker om klaar te maak spot voorwerpe vir 'n paar klasse uit die Servlet API:

http: //static.springframework.org/spring/docs/2.5.x/api/org/springframework/mock/web/package-summary.html

Goed. Ignoreer die 'tomcat 'n bietjie en kodering om die Servlet, jou beste bet is om spot vir die reaksie en versoek voorwerpe te skep, en dan vertel dit wat jy verwag uit dit uit.

So vir 'n standaard leë doPost, en die gebruik van EasyMock , moet jy

public void testPost() {
   mockRequest = createMock(HttpServletRequest.class);
   mockResponse = createMock(HttpServletResponse.class);
   replay(mockRequest, mockResponse);
   myServlet.doPost(mockRequest, mockResponse);
   verify(mockRequest, mockResponse);
}

Dan begin die toevoeging kode vir die doPost. Die spot sal misluk omdat hulle geen verwagtinge, en dan kan jy die opstel van die verwagtinge van daar af.

Let daarop dat as jy wil EasyMock gebruik met klasse, sal jy moet die EasyMock klas uitbreiding biblioteek gebruik. Maar dit sal op dieselfde manier werk van toe af.

Skei die dele van die kode wat handel oor HTTP-versoek en reaksie van die dele wat besigheid logika of data-basis manipulasie doen. In die meeste gevalle sal dit 'n drie toegeroep argitektuur produseer, met 'n data-laag (vir die data-basis / volharding), diens-laag (vir die besigheid logika) en 'n aanbieding-laag (vir die HTTP-versoek en reaksie).

  1. Jy kan eenheid toets die eerste twee lae sonder enige Servlet dinge glad; dit sal makliker wees om so te toets.
  2. Jy kan die toets van die aanbieding laag, as ander stel , met behulp van spot HTTP-versoek en reaksie voorwerpe.
  3. Ten slotte, as jy voel dit regtig nodig is, kan jy integrasie toetse doen met behulp van 'n te soos HtmlUnit of JWebUnit .

Vir "in-houer" toets, 'n blik op Cactus

As jy wil in staat wees om te toets sonder 'n lopende houer kan jy óf na te boots sy komponente met jou eie mockobjects (bv met EasyMock ) of jy kan probeer MockRunner wat "pre-gedefinieerde" Saadjies vir toets servlets, JDBC-verbindings ens.

Opdateer Februarie 2018:. OpenBrace Beperk het gesluit , en sy ObMimic produk is nie meer ondersteun nie

As jy 'n nuwe alternatief vir ServletUnit vir JUnit toetsing van Servlets wil, jy kan my maatskappy se ObMimic biblioteek vind nuttig. Dit is gratis beskikbaar by die webwerf se downloads bladsy.

As met ServletUnit, dit bied 'n biblioteek van klasse wat jy in normale JUnit of TestNG toetse kan gebruik buite enige Servlet houer om die Servlet API te boots.

Die Servlet API voorwerpe het geen-argument konstruktors, is ten volle instel en inspectable vir alle relevante Servlet API data en instellings, en bied 'n volledige simulasie van al die gedrag wat deur javadoc die Servlet API's. Om te help met die toets daar is ondersteuning vir selektiewe opname van Servlet API oproepe, beheer oor enige houer-afhanklike gedrag, tjeks vir enige dubbelsinnige oproepe (dws waar die Servlet API behavour is nie ten volle gedefinieer), en 'n in-geheue JNDI simulasie vir enige Servlet kode wat staatmaak op JNDI soektogte.

Vir volledige besonderhede, byvoorbeeld kode, "hoe om" gidse, Javadoc ens, sien die webwerf.

Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top