Olá,
sou novo aqui e também iniciante em programação e estou desesperado pois não consigo entender/fazer uma classe de teste com JUnit pra minha controller. Estou utilizando o Spring MVC para fazer um projeto web de uma entrevista de emprego, que tenho que entregar dia 27/12/2018, e um dos requisitos é que toda a lógica seja testável com JUnit, e apesar de já ter “terminado” o projeto, não consigo cumprir esse último requisito.
Segue minha classe controller cujo preciso que seja testável.
@Controller
public class ControllerFuncionario {
@RequestMapping("/index")
public String index(Funcionario funcionario, Project pro, Model model) {
JSONArray jObject;
JSONParser jParser = new JSONParser();
List<Funcionario> funcionarios = new ArrayList<Funcionario>();
try {
// ABRE O ARQUIVO JSON.
// LOCAL PODE SER ALTERADO SEM PROBLEMAS.
jObject = (JSONArray) jParser.parse(new FileReader("D:\\employees.json"));
// LOOP PRINCIPAL QUE MONTA OS OBJETOS FUNCIONARIO E ADICIONA NO List<Funcionario> funcionarios.
for (int i = 0; i < jObject.size(); i++) {
JSONObject jFuncionario = (JSONObject) jObject.get(i);
funcionario = new Funcionario();
funcionario.setIdFuncionario(i);
funcionario.setName(jFuncionario.get("name").toString());
funcionario.setRole(jFuncionario.get("role").toString());
funcionario.setSalary(jFuncionario.get("salary").toString());
funcionario.setManager(jFuncionario.get("manager").toString());
funcionario.setGcm(jFuncionario.get("gcm").toString());
// DENTRO DESTE IF SÃO INSTANCIADOS OS PROJETOS QUE SERÃO POPULADOS E ADICIONADOS AO FUNCIONARIO.
if (jFuncionario.get("projects") != null) {
JSONArray projectArray = (JSONArray) jFuncionario.get("projects");
List<Project> projectList = new ArrayList<Project>();
for (int j = 0; j < projectArray.size(); j++) {
JSONObject projects = (JSONObject) projectArray.get(j);
pro = new Project();
pro.setName(projects.get("name").toString());
pro.setCustomer(projects.get("customer").toString());
pro.setValueOfProject(projects.get("valueOfProject").toString());
pro.setDtBegin(projects.get("dtBegin").toString());
pro.setDtEnd(projects.get("dtEnd").toString());
projectList.add(pro);
}
funcionario.setProjectList(projectList);
}
// DENTRO DESTE IF SÃO ADICIONADOS AS SKILLS DO FUNCIONARIO.
if (jFuncionario.get("skills") != null) {
JSONArray skillArray = (JSONArray) jFuncionario.get("skills");
Iterator<String> iterator = skillArray.iterator();
String[] skills = new String[skillArray.size()];
while (iterator.hasNext()) {
for (int k = 0; k < skills.length; k++) {
skills[k] = iterator.next();
}
funcionario.setSkills(skills);
}
}
// DENTRO DESTE IF SÃO ADICIONADOS AS CERTIFICATIONS DO FUNCIONARIO.
if (jFuncionario.get("certification") != null) {
JSONArray certificationArray = (JSONArray) jFuncionario.get("certification");
Iterator<String> iterator = certificationArray.iterator();
while (iterator.hasNext()) {
String[] certifications = new String[certificationArray.size()];
for (int l = 0; l < certifications.length; l++) {
certifications[l] = iterator.next();
}
funcionario.setCertification(certifications);
}
}
// FUNCIONARIO POPULADO ADICIONADO NA LISTA.
funcionarios.add(funcionario);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
return "errorPages/fileNotFoundError";
} catch (IOException e) {
e.printStackTrace();
return "errorPages/fileNotFoundError";
} catch (ParseException e) {
e.printStackTrace();
return "errorPages/parseError";
}
model.addAttribute("funcionarios", funcionarios);
return "index";
}
}
Basicamente o método faz a leitura de um arquivo JSON que contém informações de funcionários de uma empresa, monta uma lista dos funcionários e no fim retorna uma JSP com essa lista no Model.
Espero que não esteja faltando nenhuma informação. Caso alguém queira me mandar mensagem no Discord, minha TAG é: #9879
Agradeço desde já.