我使用的是Junit Jupiter。我是用vscode安装的。这是我的lib junit-platform-console-standalone-1.9.0.jar,用的是vs代码:
我的文件是:
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");
}
}
请不要担心代码质量。
当我运行代码工作时:
但如果我运行测试挂起消息“解析启动配置”如下图:
我尝试了很多方法。降级扩展和packejes,连接到另一个网络,改变文件夹和路径。我尝试从其他地方安装 *.jar,但我不能在vs代码中运行。我验证并改变引用。没有任何效果。
我使用的Windows 10在最后一个更新版本,64位.
1条答案
按热度按时间332nm8kg1#
从你的代码来看,你似乎遇到了一个similar to this问题。如果你的扩展不是最新版本(0.37.1),那么请更新它并重新加载vscode,因为这个问题昨天刚刚修复并发布。对我来说,我也必须更新vscode才能让它工作,所以你可能也需要这样做。希望这个答案对你有帮助。