Home > Mobile >  I can't run tests with JUnit Jupter. Hangs on message "Resolving launch configuration"
I can't run tests with JUnit Jupter. Hangs on message "Resolving launch configuration"

Time:09-05

I'm using the Junit Jupiter. I installed by vscode. This is my lib junit-platform-console-standalone-1.9.0.jar in vs code :

lib junit-platform-console-standalone-1.9.0.jar

My files are :

Main.java

import java.text.ParseException;
import java.text.SimpleDateFormat;

public class Main {
    public static void main(String[] args) throws ParseException {
        Agenda agenda = new Agenda();
        Compromisso compromisso = new Compromisso("Matheus", "31/08/2022");
        agenda.addCompromissoPeriodico(compromisso, 7,3);
        for (int i = 0; i < agenda.getAgenda().size(); i  ) {
            System.out.print(agenda.getAgenda().get(i).getNome());
            SimpleDateFormat sdf1 = new SimpleDateFormat("dd/MM/yyyy");
            System.out.print(agenda.getAgenda().get(i).getDataCompromisso().getData());
        }

    }
}

Agenda.java

import java.text.ParseException;
import java.util.ArrayList;
import java.util.GregorianCalendar;

import static java.util.Calendar.DAY_OF_MONTH;

public class Agenda {


    private static ArrayList<Compromisso> agenda = new ArrayList<>();
    private static GregorianCalendar gc;

    public void addCompromisso(Compromisso compromisso) {
        agenda.add(compromisso);
    }

    public void addCompromissoPeriodico(Compromisso compromisso, int repetirAcada, int numeroRepeticoes) {

        gc = iniciarCalendar(compromisso.getDataCompromisso());

        for (int i = 0; i <= numeroRepeticoes; i  ) {
            addCompromisso(compromisso);
            gc.add(DAY_OF_MONTH, repetirAcada);
            compromisso.getDataCompromisso().setData(gc.getTime());
        }
    }

    public void vizualizarCompromissos(String diaInicial, String diaFinal) throws ParseException {
        DataC dataInicial;
        DataC dataFinal = new DataC(diaFinal);

        for (Compromisso compromisso : agenda) {
            dataInicial = new DataC(diaInicial);
            gc = iniciarCalendar(dataInicial);

            while (dataInicial.getData().equals(dataFinal.getData())) {
                if (compromisso.getDataCompromisso().getData() == dataInicial.getData()) {
                    compromisso.imprimirCompromisso();
                }
                gc.add(DAY_OF_MONTH, 1);
            }
        }
    }

    private GregorianCalendar iniciarCalendar(DataC data) {
        GregorianCalendar gc = new GregorianCalendar();
        gc.setTime(data.getData());
        return gc;
    }


    //#region Getter

    public static ArrayList<Compromisso> getAgenda() {
        return agenda;
    }


    //#endregion
}

Compromisso.java

import java.text.ParseException;

public class Compromisso {

    //#region Atributos
    private static String nome;
    private static DataC dataCompromisso;

    //#endregion


    //#region Construtores

    /**
     * Inicializa o objeto compromisso a Partir de uma String nome e uma String com a data do compromisso.
     *
     * @param name            Espera uma String para atribuir ao objeto compromisso
     * @param dataCompromisso Espera uma String no formato dd/MM/yyyy para atribuir ao objeto compromisso
     */
    public Compromisso(String name, String dataCompromisso) throws ParseException {
        init(name, dataCompromisso);
    }

    /**
     * Inicializa o objeto compromisso com o valor de nome "Não Iniciado" e a Data "01/01/2022"
     */
    public Compromisso() throws ParseException {
        init("Não Iniciado", "01/01/2022");
    }

    //#endregion


    //region Métodos


    /**
     * Método privado utilizado para auxiliar na atribuição dos construtores
     *
     * @param nome            Espera uma String para atribuir o nome.
     * @param dataCompromisso Espera uma String no formato dd/MM/yyyy.
     * @throws ParseException Lança uma excessão caso o formato não corresponda ao esperado.
     */
    private void init(String nome, String dataCompromisso) throws ParseException {
        Compromisso.nome = nome;
        Compromisso.dataCompromisso = new DataC(dataCompromisso);
    }

    /**
     * Método utilizado para imprimir na tela, os dados do compromisso no formato String
     */
    public void imprimirCompromisso() {
        System.out.println(nome);
        System.out.println(dataCompromisso.dataEmString());
    }
    //#endregion

    //#Region Getters

    public String getNome() {
        return nome;
    }

    public DataC getDataCompromisso() {
        return dataCompromisso;
    }

    //#endregion
}

DataC.java

import java.util.*;
import java.text.*;

public class DataC {
    
    //#region Atributos
    private Date data;

    //#endregion

    //#region Construtores


    /**
     *  Inicializa o objeto Data, a partir da String com a data correspondente
     * @param inputUsuario Espera uma String no formato dd/MM/yyyy
     * @throws ParseException Lança excessão caso o formato do input esteja fora do padrão dd/MM/yyyy
     */
    DataC(String inputUsuario) throws ParseException {
        init(inputUsuario);
    }


    /**
     * Inicializa o objeto data com o valor "01/01/2022 caso não seja passado nenhum parâmetro"
     */
    DataC() throws ParseException {
        init("01/01/2022");
    }

    //#endregion


    //#region Métodos

    /**
     *  Método privado utilizado para iniciar os construtores
     * @param inputUsuario Espera uma String no formato "dd/MM/yyyy"
     * @throws ParseException Lança excessão caso o formato do input esteja fora do padrão dd/MM/yyyy
     */
    private void init(String inputUsuario) throws ParseException {
        SimpleDateFormat sdf1 = new SimpleDateFormat("dd/MM/yyyy");
        this.data = sdf1.parse(inputUsuario);
    }

    /**
     * Método que converte a variavel date para String
     * @return Retorna uma String no formato "dd/MM/yyyy"
     */
    public String dataEmString() {
        DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
        return dateFormat.format(this.data);
    }

    //#endregion


    //#region Getters & Setters

    public Date getData() {
        return data;
    }
    public void setData(Date data) {
        this.data = data;
    }
    //#endregion

}

TestAgenda.java

import org.junit.jupiter.api.Test;

import java.text.ParseException;

import static org.junit.jupiter.api.Assertions.assertEquals;

public class TestAgenda {

    private static Agenda agenda = new Agenda();
    private static Compromisso compromisso;

    static {
        try {
            compromisso = new Compromisso("Aniversario", "20/04/2003");
        } catch (ParseException e) {
            throw new RuntimeException(e);
        }
    }


    @Test
    public void insereNaLista() {

        agenda.addCompromisso(compromisso);
        assertEquals(Agenda.getAgenda().get(0).getNome(), "Aniversario");
    }


}

TestCompromisso.java

import org.junit.jupiter.api.Test;

import java.text.ParseException;

import static org.junit.jupiter.api.Assertions.assertEquals;

public class TestCompromisso {
    @Test
    public void criarCerto() throws ParseException {
        Compromisso compromisso = new Compromisso("Meu aniversario", "20/04/2003");
        assertEquals(compromisso.getNome(), "Meu aniversario");
        assertEquals(compromisso.getDataCompromisso().dataEmString(), "20/04/2003");
    }

    @Test
    public void criarCertoVazio() throws ParseException {
        Compromisso compromisso = new Compromisso();
        assertEquals(compromisso.getNome(), "Não Iniciado");
        assertEquals(compromisso.getDataCompromisso().dataEmString(), "01/01/2022");
    }

}

TestData.java

import org.junit.jupiter.api.Test;

import java.text.ParseException;

import static org.junit.jupiter.api.Assertions.assertEquals;

public class TestData {
    @Test
    void imprimirCorreto() throws ParseException {
        DataC dataUsuario = new DataC("20/04/2003");
        String dataConvertida = dataUsuario.dataEmString();
        assertEquals(dataConvertida, "20/04/2003");
    }

    @Test
     void criarData() throws ParseException {
        DataC dataUsuario = new DataC("20/04/2003");
        assertEquals(dataUsuario.dataEmString(), "20/04/2003");
    }

    @Test
    void criarDataVazia() throws ParseException {
        DataC dataUsuario = new DataC();
        assertEquals(dataUsuario.dataEmString(), "01/01/2022");
    }

}

Please don't worry with the code qualit.

Whe i run the code workink:

Run the code

But if i run the tests hangs on message "Resolving launch configuration" like the image below:

Resolving launch configuration

I tried a lot of thing. Downgrade extensions and packejes, conect in anoter network, change the folder and paths. I tried install the *.jar from other place but I can't run in vs code. I verify and change references. Nothing worked.

I using Windows 10 in the last update version, 64 bits.

CodePudding user response:

From your code, you seem to be experiencing an issue similar to this. If your extension is not to the latest version (0.37.1), then please update it and reload vscode, as that issue was just fixed and released yesterday. For me, I also had to update vscode in order for it to work, so you may need to do that as well. Hope this answer helps.

  • Related