Quando efetuo um teste da Classe TaskTest
no console aparece a Query SQL que foi inserido no Banco de Dados. Entretanto, quando roda a aplicação normalmente e insiro um objeto Task via console, não aparece a Query SQL consequentemente não é salvo no Banco de Dados.
Classe de Teste:
public class TaskTest {
private static TaskController taskController;
private static EntityManager entityManager;
private static EntityTransaction transaction;
@BeforeAll
static void setup(){
ConnectionUtil connection = new ConnectionUtil();
entityManager = connection.recoverEntityManager();
taskController = new TaskController(new TaskService(new TaskDAO(entityManager)));
transaction = entityManager.getTransaction();
transaction.begin();
}
@AfterAll
static void teardown(){
if (transaction.isActive()) {
transaction.rollback();
}
entityManager.close();
}
@Test
@DisplayName("User must be able to create a new task")
void createNewUserTasks(){
taskController.createTask("description", "12/09/2025");
List<TaskEntity> tasks = entityManager.createQuery("SELECT tasks FROM TaskEntity tasks", TaskEntity.class)
.getResultList();
assertFalse(tasks.isEmpty());
tasks.forEach(System.out::println);
}
//...
Classe TaskController
public class TaskController implements UITaskInterface {
private TaskService taskService;
public TaskController(TaskService taskService) {
this.taskService = taskService;
}
@Override
public void createTask(String description, String date) {
LocalDate dueDate = TaskEntity.parseFormat(date);
TaskEntity myTask = new TaskEntity(description, dueDate);
taskService.save(myTask);
}
//...
Class TaskService
public class TaskService implements TaskRepository {
private DAO taskDAO;
public TaskService(DAO taskDAO) {
this.taskDAO = taskDAO;
}
@Override
public void save(TaskEntity object) {
taskDAO.save(object);
}
//...
TaskDAO
public class TaskDAO implements DAO<TaskEntity>{
private EntityManager entityManager;
public TaskDAO(EntityManager entityManager){
this.entityManager = entityManager;
}
@Override
public void save(TaskEntity object) {
entityManager.persist(object);
}
Class UI
public class UI {
private UITaskInterface taskInterface;
public static Scanner input = new Scanner(System.in);
public UI(UITaskInterface taskInterface) {
this.taskInterface = taskInterface;
}
public void printDisplay(){
Integer response = screen();
System.out.println();
while (response != 5){
try{
switch (response){
case 1 :
listAllTaskUI();
break;
case 2 :
createTaskUI();
break;
case 3 :
updateTaskUI();
break;
case 4 :
deleteTaskUI();
break;
}
response = screen();
System.out.println();
}catch (Exception e){
System.out.println("\n"+e.getMessage());
System.out.println("Pressione \"Enter\" para continuar!\n");
}
}
}
private Integer screen(){
System.out.print("""
\nTask Manager
Escolha uma opção:
1 - Listar Minhas Tarefas.
2 - Criar uma Nova Tarefa.
3 - Atualizar uma nova Tarefa.
4 - Apagar uma Tarefa.
5 - SAIR.
""");
return input.nextInt();
}
private void createTaskUI() {
input.nextLine();
System.out.println("Descreva sua Tarefa :");
String description = input.nextLine();
System.out.print("Qual a data limite para o término da tarefa" +
"\nEscreva neste formato 'dd/MM/yyyy': ");
String dueDate = input.nextLine();
taskInterface.createTask(description, dueDate);
System.out.println("\nTarefa criada!");
}
Cenário do Teste Cenário da aplicação