1
00:00:00,150 --> 00:00:00,810
Continuamos?

2
00:00:00,870 --> 00:00:04,200
Bueno, la clase anterior vimos pro unitaria, pero algo general.

3
00:00:04,380 --> 00:00:08,730
Ahora me voy a centrar en Yuni 5 calarse que vamos a utilizar en el curso.

4
00:00:08,820 --> 00:00:10,110
Cuál es la arquitectura?

5
00:00:10,190 --> 00:00:13,050
Bueno, de qué se trata comprar un poco con la versión 4?

6
00:00:13,140 --> 00:00:14,010
La versión anterior?

7
00:00:14,160 --> 00:00:15,510
Bueno, de hecho podremos partir con eso.

8
00:00:15,570 --> 00:00:17,820
Cuál es la diferencia entre la 4 y las 5?

9
00:00:18,000 --> 00:00:24,660
Bueno, antes que nada, la 4 ya tenía mucho tiempo en la industria, por lo menos unos 10, o quizá

10
00:00:24,660 --> 00:00:26,340
un poco más de años.

11
00:00:26,460 --> 00:00:32,430
Cuando salió la versión 5, es decir, mucho tiempo, diseño en una aplicación, en un software, demasiado.

12
00:00:32,490 --> 00:00:33,840
Por qué pasa mucho cambio?

13
00:00:33,870 --> 00:00:38,310
Bueno, de hecho todo lo que lleva 8 en Yuni 4 no existe.

14
00:00:38,400 --> 00:00:39,990
Por ejemplo, presiona el danda.

15
00:00:40,080 --> 00:00:42,210
Programación funcional, el API Stream.

16
00:00:42,240 --> 00:00:44,730
Todo eso se viene implementar en la versión 5.

17
00:00:44,910 --> 00:00:55,470
Yune 4 más o menos fue lanzado desarrollado en 2006 por ahí y bueno, la versión 5 se lanza por ahí

18
00:00:55,560 --> 00:00:57,210
2015/2016.

19
00:00:57,390 --> 00:01:05,340
Mucho tiempo sin actualizarse, sin una característica, sin unos patrones de testing, si no que artrítica

20
00:01:05,340 --> 00:01:11,100
el lenguaje de Java, un montón de cosas que se incorporaron en la versión 5.

21
00:01:11,250 --> 00:01:17,340
Y no solamente eso, sino también muchos tipos, formas de realizar pras unitarias o estilos que se

22
00:01:17,340 --> 00:01:19,110
agregan en la versión 5.

23
00:01:19,260 --> 00:01:21,120
Es decir, un cambio bastante rotundo.

24
00:01:21,360 --> 00:01:24,290
Pero comencemos con Yuni 5 tles que es.

25
00:01:24,360 --> 00:01:31,410
Ya vimos que Yuni es una librería de Java, un framework que le permite escribir y ejecutar puras unitarias

26
00:01:31,650 --> 00:01:33,960
repetibles, es decir, en el tiempo.

27
00:01:34,050 --> 00:01:39,990
Pero bueno, Yuni 5 además de eso, trae un nuevo modelo programación mucho más robusto que la versión

28
00:01:39,990 --> 00:01:40,470
anterior.

29
00:01:40,620 --> 00:01:42,600
Programación funcional, expresiones lambda.

30
00:01:42,630 --> 00:01:47,850
Es decir, toda la característica de ya 8 incluye además varios estilos diferentes de pruebas que vamos

31
00:01:47,850 --> 00:01:48,960
a ver durante el curso.

32
00:01:48,960 --> 00:01:51,870
Por ejemplo, pruebas unitarias repetibles.

33
00:01:51,990 --> 00:01:57,900
Podemos indicar la cantidad de veces que queremos repetir una misma prueba o bien podemos repetir una

34
00:01:57,900 --> 00:02:00,060
prueba con distintos tipos de parámetros.

35
00:02:00,220 --> 00:02:01,660
Prueba parametrizar ables.

36
00:02:01,800 --> 00:02:08,160
Es decir, por ejemplo una lista, un arreglo de varios parámetros de entrada o input con diferentes

37
00:02:08,160 --> 00:02:11,160
valores y probar cómo se comporta con estos diferentes valores.

38
00:02:11,320 --> 00:02:14,380
Es importante, automatizada y parametrizar.

39
00:02:14,380 --> 00:02:18,150
Ya se van a ejecutar esta misma prueba pero con diferentes scenario.

40
00:02:18,270 --> 00:02:24,180
Otro estilo por ejemplo manejo excepciones, es decir, bajo ciertos parámetros de entrada debería fallar

41
00:02:24,180 --> 00:02:24,930
nuestra aplicación.

42
00:02:25,080 --> 00:02:27,060
Bueno, se está manejando correctamente.

43
00:02:27,270 --> 00:02:32,550
Realmente se está lanzando una excepción que nosotros deseamos o esperamos?

44
00:02:32,670 --> 00:02:37,320
Bueno, si así se está ejecutando bien, a pesar de que estamos probando o estamos simulando un error,

45
00:02:37,380 --> 00:02:42,450
pero lo estamos simulando de forma controlada, estamos provocando el error para que ocurra tal como

46
00:02:42,450 --> 00:02:43,260
queremos que ocurra.

47
00:02:43,350 --> 00:02:49,680
Bajo ese contexto, ahora si se lanza, por ejemplo, otra opción distinta a la que esperamos, bueno,

48
00:02:49,800 --> 00:02:50,190
falla.

49
00:02:50,190 --> 00:02:51,660
La prueba no pasa.

50
00:02:51,810 --> 00:02:56,190
O bien, si no se lanza ninguna acepción significa que no estamos controlando o manejando el error.

51
00:02:56,310 --> 00:02:59,640
Y ahí tenemos un problema que tenemos que solucionar, se fijan.

52
00:02:59,730 --> 00:03:05,880
Es un estilo de prueba distinto también todo lo que es ejecución de pruebas condicionales, es decir,

53
00:03:05,940 --> 00:03:12,780
que se ejecuten no siempre sino bajo cierto contexto, bajo cierto ambiente, cierta versión, por ejemplo,

54
00:03:12,780 --> 00:03:18,800
de JDK, si la versión en la ONCE, por ejemplo, que ejecute una cierta prueba única especial para

55
00:03:18,810 --> 00:03:23,160
apurar un código o no a características del JDK 11 o superior.

56
00:03:23,220 --> 00:03:25,920
Pero si estamos utilizando la 1 8, la 8.

57
00:03:26,220 --> 00:03:31,620
No, pero también bajo ciertos parámetros de nuestro sistema variable de ambiente.

58
00:03:31,800 --> 00:03:36,570
Si tenemos configurada un área de ambiente o no, bueno, aquí ejecuta la prueba, sino que no la ejecute

59
00:03:36,930 --> 00:03:38,460
o si estamos en Linux que la ejecute.

60
00:03:38,520 --> 00:03:41,070
Si tengo makin touch o un Windows que no la ejecute.

61
00:03:41,250 --> 00:03:47,100
Bueno, ya hace un montón de cosa que veremos durante el curso uso extensivo de anotaciones, manejo

62
00:03:47,100 --> 00:03:49,140
ciclo de día en la clase de test.

63
00:03:49,290 --> 00:03:55,440
En fin, veámosla quitectura de Yuni 5 1 de la diferencia con Yune 4.

64
00:03:55,560 --> 00:04:00,630
La versión anterior es que era monolítica, es decir, había un solo gran componente que hacía todo

65
00:04:00,720 --> 00:04:07,320
y estaba todo dentro de ese mismo componente, por así decir UNIT 4 y finalmente era un solo JAR.

66
00:04:07,410 --> 00:04:12,060
Acá no, acá tenemos una arquitectura un poco más robusta, ya tenemos diferentes componentes, tenemos

67
00:04:12,060 --> 00:04:19,650
un core, tenemos el API o piei y también bueno, vamos a ver que tenemos componente llamado vintage.

68
00:04:19,920 --> 00:04:23,040
Pero para resumir, comencemos con Yuni plataforma.

69
00:04:23,070 --> 00:04:27,350
La plataforma de Yuni 5 bueno es el core.

70
00:04:27,510 --> 00:04:33,180
Es la librería principal que está enfocada al contexto de ejecución del test.

71
00:04:33,450 --> 00:04:37,680
Es como el framework de ejecución que lanza nuestras pruebas unitarias.

72
00:04:37,950 --> 00:04:44,940
Nuestras pruebas unitarias pueden estar crita utilizando UNIT, por ejemplo el API Júpiter, con el

73
00:04:44,940 --> 00:04:47,750
cual nosotros interactuamos como programadores desarrolladores.

74
00:04:47,850 --> 00:04:53,790
Siempre estamos escribiendo nuestros test con Júpiter o Júpiter, como le queremos decir, es el API.

75
00:04:54,060 --> 00:04:59,160
Por ejemplo, como desarrolladores nunca vamos a interactuar con la plataforma, la plataforma solamente

76
00:04:59,160 --> 00:04:59,850
para ejecutar.

77
00:04:59,970 --> 00:05:01,410
Es el framework de ejecución.

78
00:05:01,560 --> 00:05:10,470
Por ejemplo, los IDE como Eclipse NetBeans intelige se fijan visual có todo integran y Yuni 5.

79
00:05:10,620 --> 00:05:13,920
Y por supuesto, la ejecución de prueba unitaria a través de la plataforma.

80
00:05:14,100 --> 00:05:17,910
Por lo tanto, Elide sí que interactúa con la plataforma.

81
00:05:18,180 --> 00:05:23,340
Tienen una integración, pero como desarrollaré no, nosotros solamente escribimos nuestra prueba a

82
00:05:23,340 --> 00:05:24,930
través de Júpiter.

83
00:05:25,200 --> 00:05:26,670
Luego tenemos Píntate.

84
00:05:26,940 --> 00:05:34,830
Es un componente que nos permite integrar la versión 4 o versión 3 en un proyecto que conviva en conjunto

85
00:05:34,860 --> 00:05:37,290
con proas unitaria de la versión 5.

86
00:05:37,500 --> 00:05:42,330
Es decir, podríamos tener un proyecto que ya tiene pruebas unitarias con la versión antigua, pero

87
00:05:42,330 --> 00:05:46,350
además queremos implementar pruebas unitarias con Extend 5 que ya existían.

88
00:05:46,440 --> 00:05:51,450
La dejamos tal cual con la 4 y además 5 y no tener que escribir Toh Halverson 5.

89
00:05:51,570 --> 00:05:56,100
Veamos un poco más detallado, por ejemplo, que tenemos Yuni plataforma que es el core.

90
00:05:56,250 --> 00:06:02,700
Recuerden Hakata todo el test en jeune o el motor de ejecución de test.

91
00:06:02,880 --> 00:06:09,270
Acá se lanza nuestra parasu unitarias, pero nos permite lanzar pruebas unitarias con Júpiter, con

92
00:06:09,270 --> 00:06:15,450
Júpiter que la versión 5, pero también nos permite ejecutar obras unitarias de la versión más antigua,

93
00:06:15,510 --> 00:06:21,870
la 3 y la 4, pero además nos permite ejecutar, lanzar otros test de otro framework de tercero.

94
00:06:22,140 --> 00:06:29,940
Incluso si no nos gusta utilizar Júpiter ni tampoco Yuni 4 podrían utilizar un externo de otro proveedor

95
00:06:30,180 --> 00:06:32,900
de un tercero o incluso desarrollarlo.

96
00:06:32,920 --> 00:06:38,410
Nosotros se fijan y hoy trae integración para ejecutar otro framework de texting.

97
00:06:38,670 --> 00:06:44,880
Entonces provee un API para poder desarrollar nuestro propio framework de unit test y puede lanzarlo

98
00:06:44,970 --> 00:06:45,750
en la plataforma.

99
00:06:45,810 --> 00:06:46,470
Ejecútalo.

100
00:06:46,620 --> 00:06:48,020
Y qué pasa con los IDE?

101
00:06:48,270 --> 00:06:51,940
Por ejemplo, intelige con Eclipse, con Nesbit, visto Alcott.

102
00:06:52,080 --> 00:06:54,900
Bueno, todo traen integración con plataforma.

103
00:06:55,110 --> 00:07:01,500
Si desarrollamos una aplicación en INTELIGE, podemos ejecutar las pruebas unitarias porque trae integración.

104
00:07:01,650 --> 00:07:07,800
Claro, entonces podemos ejecutar nuestro test con los diferentes IDE, que tenga soporte a plataforma

105
00:07:07,980 --> 00:07:13,230
y no solamente con IDE, sino también con herramientas de construcción de despliegue.

106
00:07:13,410 --> 00:07:20,030
Cuando generamos el llear por ejemplo con Graiver, con Maven, con Aunt también o incluso desde consola

107
00:07:20,310 --> 00:07:23,520
y al final cada uno ese componente corresponde a un llear.

108
00:07:23,730 --> 00:07:29,090
No es una librería, un framework monolítico, está todo dentro de una misma librería, no?

109
00:07:29,200 --> 00:07:32,010
Acá cada uno de los componentes tiene su propio jar.

110
00:07:32,010 --> 00:07:38,390
Por ejemplo Yuni plataforma es con la librería el jar unit en Jeune.

111
00:07:38,670 --> 00:07:41,690
Luego tenemos Yuni, Júpiter o Jupiter que es el API.

112
00:07:41,970 --> 00:07:43,380
Se fijan Julieth Happy.

113
00:07:43,680 --> 00:07:50,160
Luego tenemos el JAR de Yuni Vintage para poder tener dentro de un mismo proyecto pruebas unitaria conversión

114
00:07:50,160 --> 00:07:52,290
5, pero también conversiones antiguas.

115
00:07:52,380 --> 00:07:57,180
Y para finalizar y Yuni Júpiter es un API que nos permite escribir nuestros test.

116
00:07:57,300 --> 00:08:00,090
Nosotros como desarrolladores interactuamos de forma directa.

117
00:08:00,090 --> 00:08:02,670
Conecta API agrega un nuevo modelo de programación.

118
00:08:02,760 --> 00:08:04,650
No haga terísticas todo lo que lleva.

119
00:08:04,650 --> 00:08:05,060
8.

120
00:08:05,070 --> 00:08:06,470
Todo lo que presiona Landau.

121
00:08:06,480 --> 00:08:08,280
Todo lo que programación funcional.

122
00:08:08,460 --> 00:08:10,860
Todo esto se incluye en esta nueva versión.

123
00:08:11,010 --> 00:08:17,040
Además, incorporan y se reescriben las anotaciones que ya venían de la versión 4.

124
00:08:17,040 --> 00:08:22,920
Se reescriben, se le cambian el nombre alguna y también se agregan muchas anotaciones nuevas y estilo

125
00:08:22,920 --> 00:08:23,870
de testing de prueba.

126
00:08:23,970 --> 00:08:31,590
Y aparte también Júpiter trae un nuevo modelo de extensiones que nos permiten agregar o extender Júpiter,

127
00:08:31,680 --> 00:08:33,570
por ejemplo, para traja con Spring Frankland.

128
00:08:33,780 --> 00:08:38,970
No se refiere a implementar un nuevo framework, no, sino utilizando Júpiter.

129
00:08:39,180 --> 00:08:45,860
Lo extendemos para agregar mayor funcionalidad, mayor característica y las anotaciones que se incluyen.

130
00:08:45,920 --> 00:08:52,800
Bueno, test que ya existía en versión 4 display name está como dice nombre desplegar o mostrar el nombre

131
00:08:52,800 --> 00:08:53,340
del test.

132
00:08:53,640 --> 00:08:55,320
No existía en la versión anterior.

133
00:08:55,500 --> 00:09:00,660
Entonces, en vez de utilizar el nombre método acá, podemos incluir un nombre mucho más descriptivo

134
00:09:00,810 --> 00:09:01,350
del test.

135
00:09:01,410 --> 00:09:07,260
También se incluye Nester para dar una jerarquía de nuestra prubas unitaria, es decir, tener una clase

136
00:09:07,260 --> 00:09:13,500
de prueba y dentro de clase otra clase y así, y dar un orden, una jerarquía, etiquetar o categorizar

137
00:09:13,500 --> 00:09:13,980
contac.

138
00:09:14,040 --> 00:09:21,480
Tampoco existía extended uif estender con tampoco son características de este nuevo modelo que propone

139
00:09:21,570 --> 00:09:29,640
Jupiter before it ejecutar antes de cada metodo de test after it ejecutar después de cada método de

140
00:09:29,640 --> 00:09:30,000
test.

141
00:09:30,150 --> 00:09:32,600
Estas connotacion existían pero se llamaban distintos.

142
00:09:32,670 --> 00:09:38,250
Se llamaba por ejemplo before en vez de before each y after en vez de after it.

143
00:09:38,580 --> 00:09:42,240
Ahora se le da el nombre it, que es un poco más descriptivo.

144
00:09:42,390 --> 00:09:45,120
Antes de cada y después de cada de cada método.

145
00:09:45,330 --> 00:09:46,530
Después tenemos Before al.

146
00:09:46,680 --> 00:09:53,310
Antes se llamaba Before class, que se ejecute antes de que se ejecute cualquier método, pero se ejecuta

147
00:09:53,400 --> 00:09:53,940
una sola vez.

148
00:09:54,030 --> 00:09:55,950
No es por camelos, sino una sola vez.

149
00:09:56,160 --> 00:09:59,730
Se fijan y estos métodos son del ciclo de vida de una clase.

150
00:10:00,050 --> 00:10:02,490
Detesto lo mismo con After Old.

151
00:10:02,720 --> 00:10:08,540
Al final, después de que se haya ejecutado todos los métodos de prueba, ejecutar este método, por

152
00:10:08,540 --> 00:10:11,240
ejemplo, para finalizar algo, para cerrar un recurso.

153
00:10:11,540 --> 00:10:18,170
Finalmente tenemos disable que para deshabilitar un método, una prueba unitaria también existía, pero

154
00:10:18,260 --> 00:10:20,180
antes se llamaba en la versión 4.

155
00:10:20,180 --> 00:10:22,160
Se llamaba Ignorar de ignorar.

156
00:10:22,250 --> 00:10:26,030
Ahora diseña un cambio nombre, pero al final es lo mismo de solita.

157
00:10:26,380 --> 00:10:27,770
Es bueno, nada más por ahora.

158
00:10:27,860 --> 00:10:30,550
Y nos vemos en la siguiente clase.
