Curso Básico de Testing en Java

Curso Básico de Testing en Java

Ferran Maylinch Carrasco

Ferran Maylinch Carrasco

Testing en Java con JUnit para Verificar Contraseñas

4/24

Lectura

¡Un saludo, Platzinauta!👋🏻

¡Ups! De momento, esta clase no está disponible en nuestra plataforma, pero sí la tenemos en YouTube.

Para no interrumpir tu aprendizaje te dejamos el video y link para que puedas verla en YouTube.

Link a YouTube

Pronto estará disponible en Platzi como el resto de clases.

Gracias por tu comprensión y nunca pares de aprender💚

Aportes 54

Preguntas 3

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.

En la clase 4 se explica como crear un proyecto Maven y en esta clase arranca como si ya lo supiéramos, imagino que estan al revés, aviso por si alguno llega y no entiende nada como me pasó a mi jaja

Al final no es necesario tanto if.

package com.platzi.javatests.util;

public class PasswordUtil {

    public enum SecurityLevel {
        WEAK, MEDIUM, STRONG
    }

    public static SecurityLevel assessPassword(String password) {

        if (password.length() < 8 || password.matches("[a-zA-Z]+")) return SecurityLevel.WEAK;

        if (password.matches("[a-zA-Z0-9]+")) return SecurityLevel.MEDIUM;

        return SecurityLevel.STRONG;
    }
}
<dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
    </dependencies>

Para los que se les olvido lo que eran los enums: https://www.w3schools.com/java/java_enums.asp

Esto motiva a muchos a empezar en platzi.

2 años después y aún se espera que suban la clase.

Si recomiendo bastante que los métodos de los test se definan en CamelCase, ya que así es el estándar en Java y en el mundo laboral.

PasswordUtil.java

package com.platzi.javatests.util;

public class PasswordUtil {

  public enum SecurityLevel {
    WEAK, MEDIUM, STRONG
  }

  public static SecurityLevel assessPassword(String password) {
    if (password.length() < 8) {
      return SecurityLevel.WEAK;
    }

    if (password.matches("[a-zA-Z]+")) {
      return SecurityLevel.WEAK;
    }
    
    if (password.matches("[a-zA-Z0-9]+")) {
      return SecurityLevel.MEDIUM;
    }

    return SecurityLevel.STRONG;
  }
}

PasswordUtilTest.java

package com.platzi.javatests.util;

import org.junit.Test;

import static com.platzi.javatests.util.PasswordUtil.SecurityLevel.*;
import static org.junit.Assert.assertEquals;

public class PasswordUtilTest {

  @Test
  public void assessPasswordWeak_whenHasLessThanEightLetters() {
    assertEquals(WEAK, PasswordUtil.assessPassword("1234567"));
  }

  @Test
  public void assessPasswordWeak_whenHasOnlyLetters() {
    assertEquals(WEAK, PasswordUtil.assessPassword("abcdefgh"));
  }

  @Test
  public void assessPasswordMedium_whenHasLettersAndNumbers() {
    assertEquals(MEDIUM, PasswordUtil.assessPassword("abcd1234"));
  }

  @Test
  public void assessPasswordStrong_whenHasLettersNumbersAndSymbols() {
    assertEquals(STRONG, PasswordUtil.assessPassword("abcd123#!"));
  }
}

Dejo mi resolución


public class PasswordUtil {
    public enum SecurityLevel{
        WEAK, MEDIUM, STRONG
    }

    /*
    * @return {@link SecurityLevel}
    * @param String
    * */
    public static SecurityLevel assessPassword(String password){
        SecurityLevel response = SecurityLevel.WEAK;

        /*
        * Expresiones regulares
        * ^                   start-of-string
        * ([0-9])             a digit must occur at least once
        * ([a-z])             a lower case letter must occur at least once
        * ([A-Z])             an upper case letter must occur at least once
        * ([@#$%^&+=])    a special character must occur at least once
        * (?=\S+$)            no whitespace allowed in the entire string
        * .{8,}               anything, at least eight places though
        * $                   end of string
        * +                   can be repeated several times
        * */

        if(password.length() >= 8 && !password.matches("[a-zA-Z]+")){
            if(password.matches("[a-zA-Z0-9]+")){
                response = SecurityLevel.MEDIUM;
            } else{
                response = SecurityLevel.STRONG;
            }
        }
        return response;
    }
}

El curso de spring enseña como crear proyectos maven

https://platzi.com/clases/java-spring/

El nombre de las pruebas unitarias también tienen un objetivo y en algunos casos tienen especificación Gherkin (Given Then When). Recomendado el curso de Fundamentos de pruebas de software.

para ver videos de youtube mejor no pago y veo los videos en youtube xd

Interesante pero aun me quedaron muchas dudas, espero se disuelvan segun vayamos avanzando…

Este es el curso Nº 5 que usa expresiones regulares!
Estoy contemplando en tomar el curso de expresiones regulares!.

Muy buena clase!

El video de esta clase no esta disponible 🤯

Super 😃

dejo mi solucion
public static SecurityLevel verifyPasswordLevel(String pass){

    //menos de 8 caracteres o solo letras o solo numeros
    if (pass.length() < 8 || pass.matches("[a-zA-Z]+") || pass.matches("[0-9]+"))
        return SecurityLevel.WEAK;

    //si tiene letras y numeros es MEDIUM
    if (pass.matches("[a-zA-Z0-9]+"))
        return SecurityLevel.MEDIUM;

    //si tiene caracter especial es STRONG
    return SecurityLevel.STRONG;
}

y mis test
public class PasswordUtilTest {

@Test
public void verifyWeakPassword() {
    PasswordUtil.SecurityLevel inputPass = PasswordUtil.verifyPasswordLevel("af34");
    assertEquals(WEAK, inputPass);
}

@Test
public void verifyWeakPassword2() {
    PasswordUtil.SecurityLevel inputPass = PasswordUtil.verifyPasswordLevel("holasoydiego");
    assertEquals(WEAK, inputPass);
}

@Test
public void verifyWeakPassword3() {
    PasswordUtil.SecurityLevel inputPass = PasswordUtil.verifyPasswordLevel("1234567898");
    assertEquals(WEAK, inputPass);
}

@Test
public void verifyMediumPassword(){
    PasswordUtil.SecurityLevel inputPass = PasswordUtil.verifyPasswordLevel("abcd78945");
    assertEquals(MEDIUM, inputPass);

}

@Test
public void verifyStrongPassword(){
    PasswordUtil.SecurityLevel inputPass = PasswordUtil.verifyPasswordLevel("abcd7#8945");
    assertEquals(STRONG, inputPass);
}

}

Aca el profe trabaja con inteligIdea pero se puede con el mejor ide VSC,

Bueno recordad lo útiles que son las REGEX 😄

No se si sera solo mi caso pero al momento que escribo este mensaje el menu de Test Method que te genera este tipo de metodos me aparece con Alt+Insertar

creo que esta debería ser la clase 7 para hacerla mas entendible

Mi método assessPassword(String password) con la comprobación de los caracteres

public static SecurityLevel assessPassword(String password) {

        if (password.length() < 8 ||
            password.matches("[a-zA-Z]+")
        ) return SecurityLevel.WEAK;

        if (password.matches("[a-zA-Z0-9]+"))
            return SecurityLevel.MEDIUM;

        if (password.matches("[a-zA-Z0-9!-/]+"))
            return SecurityLevel.STRONG;

        return null;
    }

para los que no les funciona ctrl + enter , pueden usar alt+insert , a mi me funciono.

seria mejor paso por paso como descargar el programa y para que sirve cada funcion.

Pueden descargar el jar y encontrar el snippet de la dependency en la maven central: https://search.maven.org/artifact/junit/junit/4.13.2/jar

Este video se entiende mejor si se revisa más adelante, después de la clase 7.

No me reconoce el securityLevel en la clase porque se podria deber

Para los que aman la terminal, pueden usar este comando para crear su proyecto en maven:

$ mvn archetype:generate -DgroupId=com.mycompany.mypp -DartifactId=password-verifier -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4 -DinteractiveMode=false

Excelente clase

Si no te sugiere el generar Test Method con alt+Enter, intenten alt+insert

Aún no esta el vídeo de la clase.

Qué buen clase !!!

video de presentacion del profesor y del curso, no esta el video de la clase

Aún no está disponible el vídeo de la clase, actualmente de muestra el de presentación del profesor

Vídeo no disponible.

Rescato lo de la enumeración esta muy bueno.

No se puede ver el video dice que no esta disponible. Los otros videos de Youtube los he podido ver bien

Que paso con el video de esta clase?

Que buen curso, a sacar el máximo provecho.

Señores, no hay vídeo de la clase, solo una presentación del curso desde YouTube :S

Como descargo Javatests?

muy buen profe tranquilo y sabe lo dice … chevere

Debería controlarse también el caso en que pasaran como parámetro un valor null, porque en dicho caso no se estaría cumpliendo con los test.

Que bacan

Excelente demostración

Estupenda clase instructor Ferran, pensaba que las pruebas básicas serían algo más como un mensaje en consola y tomarían más tiempo, pero son alertas las cuales IntellJil las posiciona de una forma cómoda tomando en cuenta todos los elementos de la interfaz.

Muy buena clase, me funciono perfectamente jejeje.

como se instala el intelig ,creo que deberias de instalarlo desde cero?

Okay, quiero dejar aqui este mensaje como constancia de que espero acabar este curso hoy. Si no hay un mensaje en la ultima clase diciendo algo como “I did it!” entonces fallé.

Deséenme suerte

Mi solucion:

PasswordUtil.java

/**
 * PasswordUtil
 */
public class PasswordUtil {

    public enum SecurityLevel {
        WEAK,
        MEDIUM,
        STRONG
    }

    public static SecurityLevel assessPassword(String password) {
        if (password.length() < 8) {
            return SecurityLevel.WEAK;
        } else if (password.matches("[a-zA-Z]+")) {
            return SecurityLevel.WEAK;

        } else if (password.matches("[a-zA-Z0-9]+")) {
            return SecurityLevel.MEDIUM;
        } else {
            return SecurityLevel.STRONG;
        }
    }
}

PassowordUtilTest.java

import static org.junit.Assert.*;
import static ...PasswordUtil.SecurityLevel.*;

import org.junit.Test;


/**
 * PasswordUtilTest
 */
public class PasswordUtilTest {

    @Test
    public void weak_when_has_less_than_8_letters() {
        assertEquals(WEAK, PasswordUtil.assessPassword("1234567"));
    }

    @Test
    public void weak_when_has_only_letters() {
        assertEquals(WEAK, PasswordUtil.assessPassword("abcdefg"));
    }

    @Test
    public void medium_when_has_letters_and_numbers() {
        assertEquals(MEDIUM, PasswordUtil.assessPassword("abcd1234"));
    }

    @Test
    public void medium_when_has_letters_numbers_and_symbols() {
        assertEquals(STRONG, PasswordUtil.assessPassword("abcd1234*!"));
    }
}

Alguien puede recomendar una lista de cursos previos para entender bien este curso?
Soy nuevo en platzi y no se bien como orientarme, de igual forma en java.

Assess means: evaluate or estimate the nature, ability, or quality of.

Excelente