سؤال

حاليًا أستخدم TestNG Framework لاختبار منطق أعمال التطبيق ، أضفت بعض فئات Servlet مؤخرًا.

كيف يمكنني اختبار هذه الفئات Servlet في إطار TestNg؟

هل كانت مفيدة؟

المحلول

اتبع نصيحة Skaffman إن أمكن. إذا لم يكن الأمر كذلك ، أو إذا كنت ترغب في اختبار سلوك Servlets كوحدات تحكم أمامية ، بدلاً من منطق العمل بداخلها ، يمكنك استخدام:

نصائح أخرى

واحدة من أسهل الطرق servletester من رصيف. يتم كل شيء داخل الرصيف المضمن تلقائيًا ، لذلك لا يوجد منفذ مفتوح أثناء الاختبار! إذا كنت تستخدم Maven من القطع الأثرية التالية مطلوب لتمكين هذه الطريقة:

<dependency>
  <groupId>org.mortbay.jetty</groupId>
  <artifactId>jetty-servlet-tester</artifactId>
  <version>6.1.16</version>
  <scope>test</scope>
</dependency>

مثال:

تحضير servletester

ServletTester tester=new ServletTester(); 
tester.addServlet(HelloServlet.class, "/hello"); 
tester.start();

إنشاء طلب HTTP

HttpTester request = new HttpTester(); 
request.setMethod("GET");
request.setHeader("Host","tester"); 
request.setURI("/hello");
request.setVersion("HTTP/1.0");

استدعاء servlet واسترداد الاستجابة:

HttpTester response = new HttpTester();
response.parse(tester.getResponses(request.generate()));

تأكيد ما تريد التحقق من الاستجابة والمحتوى:

assertEquals(200,response.getStatus()); 
assertEquals("Hello Servlet",response.getContent());

أقترح عليك نقل كل منطق العمل خارج من فصول Servlet ، إلى فصولك الخاصة التي يمكنك اختبارها. هذا يترك servlets مثل الغراء بين منطق عملك والحاوية ، مع عدم وجود شيء يستحق الاختبار.

فصول API مثل HttpServletRequest, ServletConfig, ، إلخ ، هي أهداف رئيسية لاستخدام إطار سخر من اختيارك (JMock ، Mockito ، إلخ) ، لأنها جميعها واجهات.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top