Problemas com classe de teste Java

Olá pessoal, tudo bem?

Estou fazendo um exercício e quebrando a cabeça para concluir essa classe de teste. A intenção aqui seriam cadastros de cidades e estudantes, sendo que cada estudante teria que definir uma nova senha após feito o cadastro. Acredito que eu fiz um salseiro no código, e estou com muitas dúvidas sobre como fazer isso funcionar. Alguém poderia me ajudar? Desde já agradeço a paciência.

import static org.junit.jupiter.api.Assertions.*;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import java.io.*;

public class TesteFun4Study {
  
  public static void main(String[] args) {
    System.out.println("Cadastre a Cidade 1: ");
    
    Cidade c1 = new Cidade(
      Teclado.leInt("Informe o código: "),
      Teclado.leString("Informe a descrição: "),
      Teclado.leString("Informe a UF: ")
    );
    
    System.out.println("Cadastre o Estudante 1: ");
    
    Estudante e1 = new Estudante(
      Teclado.leInt("Informe o código: "),
      Teclado.leString("Informe o nome: "),
      Teclado.leString("Informe a data de nascimento: "),
      Teclado.leString("Informe o e-mail: "),
      Teclado.leString.Senha("Informe a senha: "),
      c1
    );
    
    String senhaAnterior = Teclado.leString("Digite a senha do Estudante 1: ");
    
    if ((e1.getSenha()).equals(senhaAnterior)) {
      e1.setSenha(novaSenha);
    } else {
      System.out.println("Não foi possível alterar a senha! As senhas digitadas não conferem!");
    }

    System.out.println("Cadastre o Estudante 2: ");
    
    Estudante e2 = new Estudante(
      Teclado.leInt("Informe o código: "),
      Teclado.leString("Informe o nome: "),
      Teclado.leString("Informe a data de nascimento: "),
      Teclado.leString("Informe o e-mail: "),
      Teclado.leString("Informe a senha: "),
      c1
    );
    
    String senhaAnterior = Teclado.leString("Digite a senha do Estudante 2: ");
    
    if ((e2.getSenha()).equals(senhaAnterior)) {
      e2.setSenha(novaSenha);
    } else {
      System.out.println("Não foi possível alterar a senha! As senhas digitadas não conferem!");
    }
    
    c1.exibeDados();
    e1.exibeDados();
    e2.exibeDados();
    
    System.out.println("Cadastre a Cidade 2: ");
    
    Cidade c2 = new Cidade(
      Teclado.leInt("Informe o código: "),
      Teclado.leString("Informe a descrição: "),
      Teclado.leString("Informe a UF: ")
    );
    
    System.out.println("Cadastre o Estudante 3: ");
    
    Estudante e3 = new Estudante(
      Teclado.leInt("Informe o código: "),
      Teclado.leString("Informe o nome: "),
      Teclado.leString("Informe a data de nascimento: "),
      Teclado.leString("Informe o e-mail: "),
      Teclado.leString("Informe a senha: "),
      c2
    );
    
    String senhaAnterior = Teclado.leString("Digite a senha do Estudante 2: ");
    
    if ((e3.getSenha()).equals(senhaAnterior)) {
      e3.setSenha(novaSenha);
    } else {
      System.out.println("Não foi possível alterar a senha! As senhas digitadas não conferem!");
    }
    
    System.out.println("Cadastre o Estudante 4: ");
    
    Estudante e4 = new Estudante(
      Teclado.leInt("Informe o código: "),
      Teclado.leString("Informe o nome: "),
      Teclado.leString("Informe a data de nascimento: "),
      Teclado.leString("Informe o e-mail: "),
      Teclado.leString("Informe a senha: "),
      c2
    );
    
    String senhaAnterior = Teclado.leString("Digite a senha do Estudante 2: ");
    
    if ((e4.getSenha()).equals(senhaAnterior)) {
      e4.setSenha(novaSenha);
    } else {
      System.out.println("Não foi possível alterar a senha! As senhas digitadas não conferem!");
    }
    
    c2.exibeDados();
    e3.exibeDados();
    e4.exibeDados();
  }
}

O que vc exatamente quer testar?

Fala Victor, blz?
Não cheguei a rodar oq vc fez mas parece q esta do jeito q vc quer.
Qual Seria a sua duvida? e cada passagem d construtor, vc ja pega a senha digitada e set no atributo, certo?
Sua duvida seria no .equals? se a variavel senhaAnterior estiver vazia, vai dar sempre q a senha não confere

Espero ter ajudado

package org.jus.trf1.trf1webapi.temp;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;

/**
 * ------------------------------
 * Vamos reescrever a classe para
 * entender melhor os pontos
 * ------------------------------
 * @author codethebasics
 */
public class TesteFun4Study {

    /**
     * Você mencionou que sua intenção seriam realizar
     * cadastros de CIDADES e ESTUDANTES.
     * Logo, precisaremos de ações que realizem esse comportamento
     * além das classes Cidade e Pessoa.
     * Vamos supor que a relação entre esta classe, a classe Pessoa
     * e a classe Cidade seja uma composição. Sendo assim, vamos declarar
     * essas classes de forma interna (classe interna).
     */

    /**
     * ------------------------------------------
     * Classe interna que representa um estudante
     * ------------------------------------------
     */
    static class Estudante {

        private final Integer codigo;
        private final String nome;
        private final String dataNascimento;
        private final String senha;

        public Estudante(Integer codigo, String nome, String dataNascimento, String senha) {
            this.codigo = codigo;
            this.nome = nome;
            this.dataNascimento = dataNascimento;
            this.senha = senha;
        }

        public Integer getCodigo() {
            return codigo;
        }

        public String getNome() {
            return nome;
        }

        public String getDataNascimento() {
            return dataNascimento;
        }

        public String getSenha() {
            return senha;
        }
    }

    /**
     * ----------------------------------------
     * Classe interna que representa uma cidade
     * ----------------------------------------
     */
    static class Cidade {
        private final Integer codigo;
        private final String descricao;
        private final String uf;

        public Cidade(Integer codigo, String descricao, String uf) {
            this.codigo = codigo;
            this.descricao = descricao;
            this.uf = uf;
        }

        public Integer getCodigo() {
            return codigo;
        }

        public String getDescricao() {
            return descricao;
        }

        public String getUf() {
            return uf;
        }
    }

    /**
     * Tudo pronto para declararmos nossas coleções que armazenarão
     * os objetos Estudante e Cidade
     */
    private static final List<Estudante> estudantes = new ArrayList<>();
    private static final List<Cidade> cidades = new ArrayList<>();

    /**
     * Agora que já temos os objetos os quais queremos trabalhar,
     * vamos criar as funções para realizar o cadastro.
     * As funções serão declaradas com o modificador static apenas
     * para ser mais fácil de exemplificar, visto que será rodado pelo
     * método main, o qual também é static. Fazendo isso não precisaremos
     * criar uma instância da própria classe dentro do método main com o fim
     * de utilizar os métodos.
     */

    /**
     * -------------------------------------------
     * Adiciona um estudante à lista de estudantes
     * -------------------------------------------
     * @param estudante Estudante a ser cadastrado
     * @return Estudante cadastrado
     */
    public Estudante cadastrarEstudante(Estudante estudante) {
        try {
            this.estudantes.add(estudante);
            return estudante;
        }
        catch (Exception e) {
            // Aqui você poderia incluir alguma lógica para se recuperar da exception
            e.printStackTrace();
        }
        return null;
    }

    /**
     * ----------------------------------------
     * Adiciona um estudante à lista de cidades
     * ----------------------------------------
     * @param cidade Cidade a ser cadastrada
     * @return Cidade cadastrada
     */
    public Cidade cadastrarCidade(Cidade cidade) {
        try {
            this.cidades.add(cidade);
            return cidade;
        }
        catch (Exception e) {
            // Aqui você poderia incluir alguma lógica para se recuperar da exception
            e.printStackTrace();
        }
        return null;
    }

    /**
     * --------------------------------------------
     * Vamos criar um método para exibir a lista de
     * Cidades e de Estudantes
     * --------------------------------------------
     */

    public static void exibirListaDeEstudantes(boolean exibirSenha) {
        estudantes.forEach(estudante -> {
            System.out.println("Código ...........................: " + estudante.getCodigo());
            System.out.println("Nome .............................: " + estudante.getNome());
            System.out.println("Data de nascimento ...............: " + estudante.getDataNascimento());
            if (exibirSenha)
                System.out.println("Senha ........................: " + estudante.getSenha());
        });
    }

    public static void exibirListaDeCidades() {
        cidades.forEach(cidade -> {
            System.out.println("Código ...........................: " + cidade.getCodigo());
            System.out.println("Descrição ........................: " + cidade.getDescricao());
            System.out.println("UF ...............................: " + cidade.getUf());
        });
    }

    /**
     * -------------------------------------------------------------
     * Vamos criar mais 2 métodos para buscar um registro individual
     * de Estudante ou Cidade
     * -------------------------------------------------------------
     */

    public static Estudante buscarEstudantePeloCodigo(Integer codigo) {
        return estudantes
            .stream()
            .filter(estudante -> estudante.getCodigo() == codigo)
            .findFirst()
            .orElseThrow(() -> new RuntimeException("Não foi possível encontrar o registo com o código de número: " + codigo));
    }

    public static Cidade buscarCidadePeloCodigo(Integer codigo) {
        return cidades
            .stream()
            .filter(cidade -> cidade.getCodigo() == codigo)
            .findFirst()
            .orElseThrow(() -> new RuntimeException("Não foi possível encontrar o registo com o código de número: " + codigo));
    }

    /**
     * ---------------------------------------------
     * Vamos isolar a lógica para exibir os detalhes
     * ---------------------------------------------
     */

    public static void exibirDadosDoEstutante(Estudante estudante) {
        System.out.println("Código ......................: " + estudante.getCodigo());
        System.out.println("Nome ........................: " + estudante.getNome());
        System.out.println("Data de Nascimento ..........: " + estudante.getDataNascimento());
    }

    public static void exibirDadosDaCidade(Cidade cidade) {
        System.out.println("Código ......................: " + cidade.getCodigo());
        System.out.println("Descrição ...................: " + cidade.getDescricao());
        System.out.println("UF ..........................: " + cidade.getUf());
    }

    /**
     * ------------------------------------------
     * Por fim vamos escrever o nosso método main
     * para executar o que foi desenvolvido
     * ------------------------------------------
     */

    public static void main(String [] args) {

        System.out.println("--------------------");
        System.out.println("Cadastre a Cidade 1 ");
        System.out.println("--------------------");
        System.out.println("Informe o código: ");
        Integer codigoCidade = 0; // <-- Pegue o que o usuário digitou no teclado
        System.out.println("Informe a descricao: ");
        String descricaoCidade = ""; // <-- Pegue o que o usuário digitou no teclado
        System.out.println("Informe a UF: ");
        String ufCidade = ""; // <-- Pegue o que o usuário digitou no teclado

        // Criando e cadastrando o objeto Cidade...
        Cidade cidade1 = new Cidade(codigoCidade, descricaoCidade, ufCidade);
        cidades.add(cidade1);
        // faça o mesmo para as demais cidades

        System.out.println("----------------------");
        System.out.println("Cadastre o Estudante 1");
        System.out.println("----------------------");
        System.out.println("Informe o código: ");
        Integer codigoEstudante = 0; // <-- Pegue o que o usuário digitou no teclado
        System.out.println("Informe o nome: ");
        String nomeEstudante = ""; // <-- Pegue o que o usuário digitou no teclado
        System.out.println("Informe a data de nascimento: ");
        String dataNascimentoEstudante = ""; // <-- Pegue o que o usuário digitou no teclado
        System.out.println("Informe o email: ");
        String emailEstudante = ""; // <-- Pegue o que o usuário digitou no teclado;
        System.out.println("Informe senha: ");
        String senhaEstudante = "";// <-- Pegue o que o usuário digitou no teclado

        // Criando o objeto Estudante
        Estudante estudante1 = new Estudante(codigoEstudante, nomeEstudante, dataNascimentoEstudante, senhaEstudante);
        estudantes.add(estudante1);
        // faça o mesmo para os demais estudantes

        // Para listar:
        exibirListaDeEstudantes(false /* <- true para mostrar a senha */);
        exibirListaDeCidades();

        // Para buscar:
        exibirDadosDoEstutante(estudante1);
        exibirDadosDaCidade(cidade1);
    }
}