Wilson Hernande Neira Mija
Tener en cuenta que al dia de hoy la funccion assertThat esta marcado como deprecated en junit4
Omar Villada
Por cual se debe reemplazar?
Elkin Fernandez
Descripción: Los años bisiestos son años con 366 días en vez de 365 y suceden cada 4 años.
Para determinar si un año es bisiesto o no, debemos seguir las siguientes reglas:
Algunas clases de pruebas terminan con la palabra Should en lugar de Test porque podemos entenderlas como frases cuando se leen en conjunto con los nombres de los métodos.
Por ejemplo, la clase DateUtilLeapYearShould con su método return_true_when_year_is_divisible_by_400 pueden leerse como "Date utils leap year should return true when year is divisible by 400" o "Los utils para calcular el año bisiesto deben devuelven true cuando el año es divisible por 400".
Wilson Hernande Neira Mija
Tener en cuenta que al dia de hoy la funccion assertThat esta marcado como deprecated en junit4
Omar Villada
Por cual se debe reemplazar?
Elkin Fernandez
Juan José Calderón
Me surgió una duda al ver este nuevo AssertThat. Ya que sentía que podría hacer lo mismo con un assertTrue o assertFalse. Busqué en internet, y encontré que el MOTIVO por el que se usa assertThat sobre estos otros es por: FACILIDAD DE LECTURA (Redability). Siento que lo explican MUY bien en esta página, asi que aquí os la dejo :D. Espero os sirva
Rahiber Paradas
Gracias por tu aporte
Milton Castañeda
REFACTORING:
public static boolean isLeapYear(int year) { return (year % 4 == 0 && year % 100 != 0) || (year % 400) == 0; }
Manuel Salv. Lemos Foncubierta
En TDD NUNCA se pasan los test a verde "por casualidad". Lo que pasa es que el profesor no ha seguido correctamente el proceso del TDD.
David Galicia Gomez
Pues que no eso fue lo que sucedio en el video? O que paso se salto o no hizo y en que momento?
José Luis García Peceros
para los que usan la versión 5 de junit para usar el assertThat y el is
<dependency> <groupId>org.hamcrest</groupId> <artifactId>hamcrest-all</artifactId> <version>1.3</version> <scope>test</scope> </dependency>
Diego Luis Giraldo Castillo
Una observación para los que esten viendo este curso sobre la metodologia de TDD, literal en la anterior clase se explicó que los pasos son ROJO(falla), VERDE(pasa) y AZUL(refactor). En ese orden, debió haberse escrito el Test antes que el código, probar que fallará y luego si escribir el código que hiciera que pasará el test. Pero acá no se siguió ese orden, y comenzamos con VERDE, para luego pasar a ROJO.
Si se hace como dicta TDD, sería algo asi:
Parece tedioso, pero asi es el flujo y en aras de la pedagogia hubiera sido bueno hacerlo asi.
Stiven Castro Arias
por favor evitar usa los importes con *, así sea en casos prácticos, es mala práctica y si lo haces aprendiendo también lo haces en el trabajo saludos
Ramiro Carbonell
Para quien esté viendo el video en 2022 o posterior y utiliza junit5
<dependency> <groupId>org.hamcrest</groupId> <artifactId>hamcrest</artifactId> <version>2.2</version> <scope>test</scope> </dependency>
Imports
import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.MatcherAssert.assertThat;
Gonzalo Muñoz
Me gusta la idea del TDD, tienes tú, o quizás otro compañero alguna guía para implementarla en aplicaciones más del mundo real? No sé bien como podría implementar TDD al hacer un microservicio, o al hacer una API, Hay alguna guía para hacerlo? He intentado buscar por internet, pero no he dado con nada convincente.
Irma Davila
Este libro puede ayudar.
Irma Davila
Este otro link, está muy interesante también.
César David Ramírez Dimaté
Arturo Mauricio Terceros Beltrán
assertThat() esta obsoleto???
Marco Bottino Poittevin
Hola. Según lo que he investigado, es método bastante reciente que se introdujo para resolver algunos problemas creados por otros métodos como assertEquals. Te dejo algunos links que amplian esta información.
https://github.com/junit-team/junit4/wiki/Matchers-and-assertthat
https://dzone.com/articles/the-benefit-of-using-assertthat-over-other-assert
Saludos.
Marco Bottino Poittevin
Hola, corrijo un error que tuve en el comentario anterior. Al parecer, sí está obsoleto en las nuevas versiones.
Dejo un comentario en el que hablan de ello y brindan documentación: https://platzi.com/comentario/994622/
Saludos y disculpa por el error.
Roberto Shirásago Domínguez
Muy buena clase
Carlos Lizcano
public class DateUtils { public static boolean isLeapYear(int year) { // Utilizando la clase Year de Java 8 para verificar si un año es bisiesto return Year.of(year).isLeap(); } }
Francisco Ruiz Lezcano
public static boolean isLeapYear(int year){ return (year % 400 == 0 || year % 100 == 0 || year % 4 == 0); }
Luis Boivar
El código lo vi cómo un poco más entendible de está manera:
public static boolean isLeapYear(int year){ boolean divisibleBy4ByNotBy100 = (year % 4 == 0 && year % 100 != 0); boolean isJustDivisibleBy400 = (year % 400 == 0); boolean isDivisibleBy100ByNotBy400 = !(year % 100 == 0 && year % 400 != 0); return (isJustDivisibleBy400 || divisibleBy4ByNotBy100) && isDivisibleBy100ByNotBy400; }```
Moises Hernandez
Sorprendente el Ide, ayuda mucho a detectar, implementar y refactorizar.
Usuario anónimo
UserBuena clase gracias :)
Nelson Alexander Ortega Abarca
esta muy bueno este curso
Luis Fernando Chacha Montenegro
O es opcional el ciclo TDD ?
Luis Fernando Chacha Montenegro
La idea no era comenzar con la prueba que falle?
Se usa la misma, pero ahora vienen en el paquete de org.hamcrest, se importa asi:
import static org.hamcrest.MatcherAssert.*;
Y ademas la dependencia que use en el pom.xml fue esta:
<dependency> <groupId>org.hamcrest</groupId> <artifactId>hamcrest-all</artifactId> <version>1.3</version> <scope>test</scope> </dependency>
No habrá problema alguno y todo funcionara correctamente.
DateUtil.java
package com.platzi.javatests.util; public class DateUtil { public static boolean isLeapYear(int year) { return (year % 400 == 0) || (year % 4 == 0 && year % 100 != 0); } }
DateUtilLeapYearShould.java
package com.platzi.javatests.util; import org.junit.Test; import static org.hamcrest.CoreMatchers.is; import static org.junit.Assert.assertThat; public class DateUtilLeapYearShould { /** * All years divisible by 400 ARE leap years (1600, 2000, 2400). * All years divisible by 100 but not by 400 are NOT leap years (1700, 1800, 1900). * All years divisible by 4 but not by 100 ARE leap years (1996, 2004, 2008). * All years are not divisible by 4 are NOT leap years (2017, 2018, 2019). */ @Test public void returnTrue_whenYearIsDivisibleBy400() { assertThat(DateUtil.isLeapYear(1600), is(true)); assertThat(DateUtil.isLeapYear(2000), is(true)); assertThat(DateUtil.isLeapYear(2400), is(true)); } @Test public void returnFalse_whenYearIsDivisibleBy100ButNotBy400() { assertThat(DateUtil.isLeapYear(1700), is(false)); assertThat(DateUtil.isLeapYear(1800), is(false)); assertThat(DateUtil.isLeapYear(1900), is(false)); } @Test public void returnTrue_whenYearIsDivisibleBy4ButNotBy100() { assertThat(DateUtil.isLeapYear(1996), is(true)); assertThat(DateUtil.isLeapYear(2004), is(true)); assertThat(DateUtil.isLeapYear(2008), is(true)); } @Test public void returnFalse_whenYearIsNotDivisibleBy4() { assertThat(DateUtil.isLeapYear(2017), is(false)); assertThat(DateUtil.isLeapYear(2018), is(false)); assertThat(DateUtil.isLeapYear(2019), is(false)); } }