2
서블릿이 있고 EasyMock을 사용하여 테스트하고 싶습니다.JUnit과 EasyMock Java를 사용하는 서블릿 테스트
public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
Population population = new Population();
Elections elections = new Elections();
ArrayList<Elector> electorsArl = new ArrayList<Elector>();
ArrayList<Candidate> candidatesArl = new ArrayList<Candidate>();
String[] name = new String[4];
String[] party = new String[4];
String[] municipality = {"X", "Y", "Z", "A"};
name[0] = request.getParameter("cand1");
party[0] = request.getParameter("party1");
name[1] = request.getParameter("cand2");
party[1]= request.getParameter("party2");
name[2] = request.getParameter("cand3");
party[2]= request.getParameter("party3");
name[3] = request.getParameter("cand4");
party[3]= request.getParameter("party4");
population.reducePopulation(candidatesArl);
String[] politicalParty = {candidatesArl.get(0).getPoliticalParty(), candidatesArl.get(1).getPoliticalParty(), candidatesArl.get(2).getPoliticalParty(), candidatesArl.get(3).getPoliticalParty()};
population.genPopulation(population.getMtyPopulation(), "X", electorsArl);
population.genPopulation(population.getGpePopulation(), "Y", electorsArl);
population.genPopulation(population.getSpPopulation(), "Z", electorsArl);
population.genPopulation(population.getSnPopulation(), "A", electorsArl);
elections.vote(electorsArl, candidatesArl, politicalParty);
request.setAttribute("candidate", candidatesArl);
int totalPopulation = electorsArl.size() + 4;
int populationVoted = 0;
for (int i = 0; i < candidatesArl.size(); i++){
populationVoted = populationVoted + candidatesArl.get(i).getAllVotes();
}
Integer totalPercentage = (Integer) (populationVoted * 100)/totalPopulation;
Integer mtyPercentage = (Integer) ((candidatesArl.get(0).getMtyVotes() + candidatesArl.get(1).getMtyVotes() + candidatesArl.get(2).getMtyVotes() + candidatesArl.get(3).getMtyVotes()) * 100)/90;
request.setAttribute("mtyPercentage", mtyPercentage);
Integer spPercentage = (Integer) ((candidatesArl.get(0).getSpVotes() + candidatesArl.get(1).getSpVotes() + candidatesArl.get(2).getSpVotes() + candidatesArl.get(3).getSpVotes()) * 100)/90;
request.setAttribute("spPercentage", spPercentage);
Integer snPercentage = (Integer) ((candidatesArl.get(0).getSnVotes() + candidatesArl.get(1).getSnVotes() + candidatesArl.get(2).getSnVotes() + candidatesArl.get(3).getSnVotes()) * 100)/90;
request.setAttribute("snPercentage", snPercentage);
Integer gpePercentage = (Integer) ((candidatesArl.get(0).getGpeVotes() + candidatesArl.get(1).getGpeVotes() + candidatesArl.get(2).getGpeVotes() + candidatesArl.get(3).getGpeVotes()) * 100)/90;
request.setAttribute("gpePercentage", gpePercentage);
request.setAttribute("totalPercentage", totalPercentage);
request.setAttribute("winner", elections.getWinnerCandidate(candidatesArl.get(0), candidatesArl.get(1), candidatesArl.get(2), candidatesArl.get(3)));
try {
ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
ElectionsDao electionsDao = (ElectionsDao) context.getBean("electionsDao");
electionsDao.insertResults(candidatesArl, mtyPercentage, spPercentage, snPercentage, gpePercentage, totalPercentage);
RequestDispatcher view = request.getRequestDispatcher(FORWARD_PAGE);
view.forward(request, response);
} catch (RuntimeException re){
logger.error("Runtime exception ocurred in ElectionsServlet.doPost", re);
response.sendRedirect("error.html");
}
}
내가 이것에 대해 생각하는 것은 그냥 다른 모든 방법이 다른 클래스에서 테스트되기 때문에 요청 및 응답을 처리하는 모든 것을 테스트해야한다는 것입니다 :
내 서블릿이 같은 것입니다 . 나는 누군가가 나를 도울 수 있는지 궁금해하고 있었다.
나는 지금까지이 : 나는 당신이 그 방법으로 사물의 엄청 많이 일을 볼 수있는에서
public class ElectionsServletTest extends TestCase {
private IMocksControl mocks;
private ElectionsServlet servlet;
@BeforeClass
public void setUpBeforeClass() {
mocks = (IMocksControl) createStrictControl();
servlet = new ElectionsServlet();
}
@After
public void tearDown() {
mocks.reset();
}
@Test
public void testDoPostHttpServletRequestHttpServletResponse() throws IOException, ServletException{
HttpServletRequest request = mocks.createMock(HttpServletRequest.class);
HttpServletResponse response = mocks.createMock(HttpServletResponse.class);
ArrayList<Candidate> candidatesArl = new ArrayList<Candidate>();
expect(request.getParameter("cand1")).andReturn("abc");
expect(request.getParameter("party1")).andReturn("abc");
expect(request.getParameter("cand2")).andReturn("bcd");
expect(request.getParameter("party2")).andReturn("bcd");
expect(request.getParameter("cand3")).andReturn("cde");
expect(request.getParameter("party3")).andReturn("cde");
expect(request.getParameter("cand4")).andReturn("def");
expect(request.getParameter("party4")).andReturn("def");
candidatesArl.add(new Candidate("abc", 35, "Monterrey", "abc"));
candidatesArl.add(new Candidate("bcd", 35, "Monterrey", "bcd"));
candidatesArl.add(new Candidate("cde", 35, "Monterrey", "cde"));
candidatesArl.add(new Candidate("def", 35, "Monterrey", "def"));
request.setAttribute("candidate", eq(isA(ArrayList.class)));
request.setAttribute("mtyPercentage", eq(isA(Integer.class)));
request.setAttribute("spPercentage", eq(isA(Integer.class)));
request.setAttribute("snPercentage", eq(isA(Integer.class)));
request.setAttribute("gpePercentage", eq(isA(Integer.class)));
request.setAttribute("totalPercentage", eq(isA(Integer.class)));
request.setAttribute("winner", "abc");
ElectionsDao electionsDao = mocks.createMock(ElectionsDao.class);
electionsDao.insertResults(candidatesArl, 45, 45, 45, 45, 45);
expect(request.getRequestDispatcher("result.jsp")).andReturn(createMock(RequestDispatcher.class));
mocks.replay();
servlet.doPost(request, response);
mocks.verify();
}
}
네 말이 맞아. 어떤 종류의 도움이 필요합니까? –
나는 이것을 시험해 볼 필요가있다 ... 나는 EasyMock을 사용하여 그것을 해보려고 노력해 왔지만 실제로 그것을 사용하는 방법을 모른다. – Tomarto
나는 내가 그 일을 어떻게하려고하는지 내 의견을 편집했다. – Tomarto