<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>springboot Archives - Software Evolutivo</title>
	<atom:link href="https://softwareevolutivo.com.ec/tag/springboot/feed/" rel="self" type="application/rss+xml" />
	<link>https://softwareevolutivo.com.ec/tag/springboot/</link>
	<description>Consultora de Software Empresarial</description>
	<lastBuildDate>Thu, 24 Nov 2022 15:41:32 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://softwareevolutivo.com.ec/wp-content/uploads/2024/03/cropped-Perfil-Redes-Iso-32x32.png</url>
	<title>springboot Archives - Software Evolutivo</title>
	<link>https://softwareevolutivo.com.ec/tag/springboot/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Cucumber + Spring boot 2 + Junit 5</title>
		<link>https://softwareevolutivo.com.ec/cucumber-spring-boot-2-junit-5/</link>
					<comments>https://softwareevolutivo.com.ec/cucumber-spring-boot-2-junit-5/#comments</comments>
		
		<dc:creator><![CDATA[Johannes Caranqui]]></dc:creator>
		<pubDate>Thu, 24 Nov 2022 15:15:28 +0000</pubDate>
				<category><![CDATA[Aplicaciones Web]]></category>
		<category><![CDATA[Desarrollo de Software]]></category>
		<category><![CDATA[Tecnología]]></category>
		<category><![CDATA[Tendencias]]></category>
		<category><![CDATA[cucumber]]></category>
		<category><![CDATA[junit]]></category>
		<category><![CDATA[pruebas aceptacion cucumber]]></category>
		<category><![CDATA[springboot]]></category>
		<guid isPermaLink="false">https://softwareevolutivo.com.ec/?p=6600</guid>

					<description><![CDATA[<p>Cuando no se realiza un buen testing el costo de arreglar un error en producción es elevado, por lo cual aplicar una buena técnica de testing nos ayuda a dormir mejor en las noches, para ello, poder incluir al equipo de desarrollo y negocio en las pruebas automatizadas será un gran avance para mantener el código y los requerimientos bajo control, aquí nace las pruebas de aceptación y BDD, una buena implementación y planteamiento de requerimientos es fundamental en esta etapa de desarrollo.</p>
<p>The post <a href="https://softwareevolutivo.com.ec/cucumber-spring-boot-2-junit-5/">Cucumber + Spring boot 2 + Junit 5</a> appeared first on <a href="https://softwareevolutivo.com.ec">Software Evolutivo</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="6600" class="elementor elementor-6600">
						<section class="elementor-section elementor-top-section elementor-element elementor-element-85ce7c7 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="85ce7c7" data-element_type="section" data-e-type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-e323cba" data-id="e323cba" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-4bb4968 elementor-widget elementor-widget-text-editor" data-id="4bb4968" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p><span style="text-align: justify;background-color: transparent;font-size: 10.5pt;font-family: Roboto, sans-serif;color: #000000;vertical-align: baseline">&nbsp;</span></p>
<p><span></span></p>
<p dir="ltr" style="line-height:1.38;text-align: justify;margin-top:0pt;margin-bottom:0pt"><span style="font-size:10.5pt;font-family:Roboto,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline">Cuando no se realiza un buen testing el costo de arreglar un error en producción es elevado, por lo cual aplicar una buena técnica de testing nos ayuda a dormir mejor en las noches</span><span style="font-size:11pt;font-family:Arial;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline">, para ello, poder incluir al equipo de desarrollo y negocio en las pruebas automatizadas será un gran avance para mantener el código y los requerimientos bajo control, aquí nace las </span><a href="https://softwareevolutivo.com.ec/espanol-iniciando-con-las-pruebas-de-aceptacion/" target="_blank">pruebas de aceptación y BDD</a><span style="font-size:11pt;font-family:Arial;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline">, una buena implementación y planteamiento de requerimientos es fundamental en esta etapa de desarrollo.</span></p>
<p dir="ltr" style="line-height:1.38;text-align: justify;margin-top:0pt;margin-bottom:0pt"><span style="font-size:11pt;font-family:Arial;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline"><br></span></p>
<p dir="ltr" style="line-height: 1.38;text-align: justify;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">Como antecedente, comprendamos que </span><a href="https://cucumber.io/" target="_blank" rel="noopener">Cucumber</a><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline"> es un software de testing TDD que nos permitirá elaborar pruebas automáticas a partir de criterios de aceptación fácilmente entendibles por los intervinientes en el proceso, el cual vamos a implementar en éste tutorial, así como </span><a href="https://spring.io/projects/spring-boot" target="_blank" rel="noopener">Spring Boot</a><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline"> y </span><a href="https://junit.org/junit5/" target="_blank" rel="noopener">JUnit</a><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">.</span></p>
<p><b style="font-weight: normal">&nbsp;</b></p>
<p dir="ltr" style="line-height: 1.38;text-align: justify;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">Para iniciar, necesitamos un proyecto básico con Spring Boot 2, en esta oportunidad lo crearemos con </span><a href="https://start.spring.io/" target="_blank" rel="noopener">Spring Initializer</a><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">, un API que permite la generación de proyectos con sus dependencias permitiendo simplificar esta etapa de arranque, aunque también se puede utilizar el plugin de Spring Boot de IntelliJ o Visual Studio Code.</span></p>
<p><b style="font-weight: normal"><br></b><span style="background-color: transparent;color: #000000;font-family: Arial;font-size: 11pt;text-align: justify">Usaremos la siguiente configuración:</span><b style="font-weight: normal"><br></b></p>
<p dir="ltr" style="line-height: 1.38;text-align: justify;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline"><span style="border: none;overflow: hidden;width: 660px;height: 318px"><img fetchpriority="high" decoding="async" style="margin-left: 0px;margin-top: 0px" src="https://lh4.googleusercontent.com/PGX81K76UH5KJXaCqomM-fMIxQb-rSD73je9w3RP7Usa46az8TjAZzQAMl_wbN54Eou6B3cMLlbH_QbY78C5mYVO42MsYu-3c_hDEFoX2Iy5JSMpx_kFJSC0PvNvuqc7qN6G2wb1W67Z8tTeDAZkvhawRPMIFQ7CggQ15L6RudhV-8vjOV4KvcsNivU3fA" width="660" height="318"></span></span></p>
<p dir="ltr" style="line-height: 1.38;text-align: justify;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 9pt;font-family: Arial;color: #434343;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">Configuración inicial con Spring Boot Initializer</span></p>
<p><b style="font-weight: normal">&nbsp;</b></p>
<ol style="margin-top: 0;margin-bottom: 0;padding-inline-start: 48px">
<li dir="ltr" style="list-style-type: decimal;font-size: 15pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">
<p dir="ltr" style="line-height: 1.38;text-align: justify;margin-top: 0pt;margin-bottom: 0pt" role="presentation"><span style="font-size: 15pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">Configuración de Cucumber y Junit 5</span></p>
</li>
</ol>
<div style="text-align: justify"><span style="color: #000000;font-family: Arial"><span style="font-size: 20px"><b>&nbsp;</b></span></span></div>
<p dir="ltr" style="line-height: 1.38;text-align: justify;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">En este paso agregaremos las dependencias de maven (librerías que se necesita para el funcionamiento correcto de Cucumber con Spring y Junit).</span></p>
<p><b style="font-weight: normal">&nbsp;</b></p>
<p dir="ltr" style="line-height: 1.38;text-align: justify;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 12pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">1.1 Dependencias de Maven (pom.xml)</span></p>
<p><b style="font-weight: normal">&nbsp;</b></p>
<p dir="ltr" style="line-height: 1.38;text-align: justify;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 12pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">1.1.1 Cucumber JVM&nbsp;</span></p>
<p dir="ltr" style="line-height: 1.6285714285714286;text-align: justify;background-color: #1e1e1e;margin-top: 0pt;margin-bottom: 0pt">
</p><p dir="ltr" style="line-height: 1.6285714285714286;text-align: justify;background-color: #1e1e1e;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 10.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #808080;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&lt;</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #569cd6;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">dependency</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #808080;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&gt;</span></p>
<p dir="ltr" style="line-height: 1.6285714285714286;text-align: justify;background-color: #1e1e1e;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 10.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #808080;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&lt;</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #569cd6;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">groupId</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #808080;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&gt;</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">io.cucumber</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #808080;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&lt;/</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #569cd6;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">groupId</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #808080;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&gt;</span></p>
<p dir="ltr" style="line-height: 1.6285714285714286;text-align: justify;background-color: #1e1e1e;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 10.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #808080;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&lt;</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #569cd6;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">artifactId</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #808080;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&gt;</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">cucumber-java</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #808080;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&lt;/</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #569cd6;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">artifactId</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #808080;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&gt;</span></p>
<p dir="ltr" style="line-height: 1.6285714285714286;text-align: justify;background-color: #1e1e1e;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 10.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #808080;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&lt;</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #569cd6;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">version</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #808080;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&gt;</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">7.8.1</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #808080;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&lt;/</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #569cd6;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">version</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #808080;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&gt;</span></p>
<p dir="ltr" style="line-height: 1.6285714285714286;text-align: justify;background-color: #1e1e1e;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 10.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #808080;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&lt;</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #569cd6;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">scope</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #808080;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&gt;</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">test</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #808080;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&lt;/</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #569cd6;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">scope</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #808080;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&gt;</span></p>
<p dir="ltr" style="line-height: 1.6285714285714286;text-align: justify;background-color: #1e1e1e;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 10.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #808080;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&lt;/</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #569cd6;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">dependency</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #808080;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&gt;</span></p>
<p dir="ltr" style="line-height: 1.6285714285714286;text-align: justify;background-color: #1e1e1e;margin-top: 0pt;margin-bottom: 0pt">
</p><p dir="ltr" style="line-height: 1.38;text-align: justify;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">Podemos encontrar el listado de versiones </span><a href="https://mvnrepository.com/artifact/io.cucumber/cucumber-jvm" target="_blank">aquí</a><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">.</span></p>
<p><b style="font-weight: normal">&nbsp;</b></p>
<p dir="ltr" style="line-height: 1.38;text-align: justify;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 12pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">1.1.2 Junit y Cucumber</span></p>
<p dir="ltr" style="line-height: 1.6285714285714286;text-align: justify;background-color: #1e1e1e;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 10.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></p>
<p dir="ltr" style="line-height: 1.6285714285714286;text-align: justify;background-color: #1e1e1e;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 10.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #808080;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&lt;</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #569cd6;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">dependency</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #808080;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&gt;</span></p>
<p dir="ltr" style="line-height: 1.6285714285714286;text-align: justify;background-color: #1e1e1e;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 10.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #808080;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&lt;</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #569cd6;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">groupId</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #808080;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&gt;</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">io.cucumber</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #808080;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&lt;/</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #569cd6;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">groupId</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #808080;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&gt;</span></p>
<p dir="ltr" style="line-height: 1.6285714285714286;text-align: justify;background-color: #1e1e1e;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 10.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #808080;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&lt;</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #569cd6;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">artifactId</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #808080;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&gt;</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">cucumber-junit-platform-engine</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #808080;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&lt;/</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #569cd6;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">artifactId</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #808080;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&gt;</span></p>
<p dir="ltr" style="line-height: 1.6285714285714286;text-align: justify;background-color: #1e1e1e;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 10.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #808080;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&lt;</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #569cd6;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">version</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #808080;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&gt;</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">7.8.1</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #808080;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&lt;/</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #569cd6;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">version</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #808080;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&gt;</span></p>
<p dir="ltr" style="line-height: 1.6285714285714286;text-align: justify;background-color: #1e1e1e;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 10.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #808080;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&lt;</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #569cd6;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">scope</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #808080;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&gt;</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">test</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #808080;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&lt;/</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #569cd6;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">scope</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #808080;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&gt;</span></p>
<p dir="ltr" style="line-height: 1.6285714285714286;text-align: justify;background-color: #1e1e1e;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 10.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #808080;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&lt;/</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #569cd6;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">dependency</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #808080;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&gt;</span></p>
<p dir="ltr" style="line-height: 1.6285714285714286;text-align: justify;background-color: #1e1e1e;margin-top: 0pt;margin-bottom: 0pt">
</p><p dir="ltr" style="line-height: 1.38;text-align: justify;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">Podemos encontrar el listado de versiones </span><a href="https://mvnrepository.com/artifact/io.cucumber/cucumber-junit-platform-engine" target="_blank">aquí</a><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">.</span></p>
<p><b style="font-weight: normal">&nbsp;</b></p>
<p dir="ltr" style="line-height: 1.38;text-align: justify;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 12pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">1.1.3 Junit platform suite </span><span style="font-size: 12pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">(ya que la opción @Cucumber de Junit4 quedó obsoleta)</span></p>
<p dir="ltr" style="line-height: 1.6285714285714286;text-align: justify;background-color: #1e1e1e;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 10.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></p>
<p dir="ltr" style="line-height: 1.6285714285714286;text-align: justify;background-color: #1e1e1e;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 10.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #808080;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&lt;</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #569cd6;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">dependency</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #808080;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&gt;</span></p>
<p dir="ltr" style="line-height: 1.6285714285714286;text-align: justify;background-color: #1e1e1e;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 10.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #808080;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&lt;</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #569cd6;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">groupId</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #808080;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&gt;</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">org.junit.platform</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #808080;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&lt;/</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #569cd6;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">groupId</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #808080;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&gt;</span></p>
<p dir="ltr" style="line-height: 1.6285714285714286;text-align: justify;background-color: #1e1e1e;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 10.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #808080;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&lt;</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #569cd6;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">artifactId</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #808080;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&gt;</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">junit-platform-suite</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #808080;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&lt;/</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #569cd6;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">artifactId</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #808080;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&gt;</span></p>
<p dir="ltr" style="line-height: 1.6285714285714286;text-align: justify;background-color: #1e1e1e;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 10.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #808080;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&lt;</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #569cd6;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">version</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #808080;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&gt;</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">1.9.0</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #808080;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&lt;/</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #569cd6;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">version</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #808080;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&gt;</span></p>
<p dir="ltr" style="line-height: 1.6285714285714286;text-align: justify;background-color: #1e1e1e;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 10.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #808080;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&lt;</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #569cd6;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">scope</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #808080;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&gt;</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">test</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #808080;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&lt;/</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #569cd6;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">scope</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #808080;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&gt;</span></p>
<p dir="ltr" style="line-height: 1.6285714285714286;text-align: justify;background-color: #1e1e1e;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 10.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #808080;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&lt;/</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #569cd6;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">dependency</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #808080;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&gt;</span></p>
<p dir="ltr" style="line-height: 1.6285714285714286;text-align: justify;background-color: #1e1e1e;margin-top: 0pt;margin-bottom: 0pt">
</p><p dir="ltr" style="line-height: 1.38;text-align: justify;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">Podemos encontrar el listado de versiones </span><a href="https://mvnrepository.com/artifact/org.junit.platform/junit-platform-suite" target="_blank">aquí</a><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">.</span></p>
<p><b style="font-weight: normal">&nbsp;</b></p>
<p dir="ltr" style="line-height: 1.38;text-align: justify;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 12pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">1.1.4 Finalmente Spring y Cucumber</span></p>
<p dir="ltr" style="line-height: 1.6285714285714286;text-align: justify;background-color: #1e1e1e;margin-top: 0pt;margin-bottom: 0pt">
</p><p dir="ltr" style="line-height: 1.6285714285714286;text-align: justify;background-color: #1e1e1e;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 10.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #808080;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&lt;</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #569cd6;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">dependency</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #808080;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&gt;</span></p>
<p dir="ltr" style="line-height: 1.6285714285714286;text-align: justify;background-color: #1e1e1e;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 10.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #808080;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&lt;</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #569cd6;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">groupId</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #808080;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&gt;</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">io.cucumber</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #808080;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&lt;/</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #569cd6;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">groupId</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #808080;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&gt;</span></p>
<p dir="ltr" style="line-height: 1.6285714285714286;text-align: justify;background-color: #1e1e1e;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 10.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #808080;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&lt;</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #569cd6;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">artifactId</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #808080;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&gt;</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">cucumber-spring</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #808080;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&lt;/</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #569cd6;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">artifactId</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #808080;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&gt;</span></p>
<p dir="ltr" style="line-height: 1.6285714285714286;text-align: justify;background-color: #1e1e1e;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 10.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #808080;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&lt;</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #569cd6;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">version</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #808080;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&gt;</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">7.8.1</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #808080;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&lt;/</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #569cd6;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">version</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #808080;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&gt;</span></p>
<p dir="ltr" style="line-height: 1.6285714285714286;text-align: justify;background-color: #1e1e1e;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 10.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #808080;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&lt;</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #569cd6;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">scope</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #808080;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&gt;</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">test</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #808080;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&lt;/</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #569cd6;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">scope</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #808080;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&gt;</span></p>
<p dir="ltr" style="line-height: 1.6285714285714286;text-align: justify;background-color: #1e1e1e;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 10.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #808080;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&lt;/</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #569cd6;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">dependency</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #808080;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&gt;</span></p>
<p dir="ltr" style="line-height: 1.6285714285714286;text-align: justify;background-color: #1e1e1e;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 10.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></p>
<p dir="ltr" style="line-height: 1.38;text-align: justify;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">Podemos encontrar el listado de versiones </span><a href="https://mvnrepository.com/artifact/io.cucumber/cucumber-spring" target="_blank">aquí</a><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">.</span></p>
<p><b style="font-weight: normal">&nbsp;</b></p>
<ol style="margin-top: 0;margin-bottom: 0;padding-inline-start: 48px" start="2">
<li dir="ltr" style="list-style-type: decimal;font-size: 16pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">
<p dir="ltr" style="line-height: 1.38;text-align: justify;margin-top: 0pt;margin-bottom: 0pt" role="presentation"><span style="font-size: 16pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">Definición e implementación de “Features”</span></p>
</li>
</ol>
<p><span style="text-align: justify;background-color: transparent;font-size: 11pt;font-family: Arial;color: #000000;vertical-align: baseline">Para esta definición, lo más usual es utilizar </span><a href="https://cucumber.io/docs/gherkin/" target="_blank">Gherkin</a><span style="text-align: justify;background-color: transparent;font-size: 11pt;font-family: Arial;color: #000000;vertical-align: baseline">; al ser de alto nivel, no es tan técnico, por lo que, es posible involucrar al personal de negocio.</span></p>
<p dir="ltr" style="line-height: 1.38;text-align: justify;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">Creamos el archivo </span><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: bold;font-style: italic;font-variant: normal;text-decoration: none;vertical-align: baseline">demo.feature</span><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline"> en </span><span style="font-size: 11pt;font-family: Arial;color: #4a86e8;background-color: transparent;font-weight: 400;font-style: italic;font-variant: normal;text-decoration: none;vertical-align: baseline">src/test/java/&lt;paquete&gt;/cucumber/features </span><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">con el siguiente contenido:</span></p>
<p dir="ltr" style="line-height: 1.6285714285714286;text-align: justify;background-color: #1e1e1e;margin-top: 0pt;margin-bottom: 0pt">
</p><p dir="ltr" style="line-height: 1.6285714285714286;text-align: justify;background-color: #1e1e1e;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 9.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&nbsp;&nbsp;&nbsp;</span><span style="font-size: 9.5pt;font-family: 'Courier New';color: #c586c0;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">Feature</span><span style="font-size: 9.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">: the hello endpoint can be retrieved</span></p>
<p dir="ltr" style="line-height: 1.6285714285714286;text-align: justify;background-color: #1e1e1e;margin-top: 0pt;margin-bottom: 0pt">
</p><p dir="ltr" style="line-height: 1.6285714285714286;text-align: justify;background-color: #1e1e1e;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 9.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 9.5pt;font-family: 'Courier New';color: #c586c0;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">Scenario</span><span style="font-size: 9.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">: client makes call to GET greeting endpoint</span></p>
<p dir="ltr" style="line-height: 1.6285714285714286;text-align: justify;background-color: #1e1e1e;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 9.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 9.5pt;font-family: 'Courier New';color: #c586c0;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">Given </span><span style="font-size: 9.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">client wants to write username</span></p>
<p dir="ltr" style="line-height: 1.6285714285714286;text-align: justify;background-color: #1e1e1e;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 9.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 9.5pt;font-family: 'Courier New';color: #c586c0;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">When </span><span style="font-size: 9.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">client calls greeting endpoint</span></p>
<p dir="ltr" style="line-height: 1.6285714285714286;text-align: justify;background-color: #1e1e1e;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 9.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 9.5pt;font-family: 'Courier New';color: #c586c0;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">Then </span><span style="font-size: 9.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">client receives hello text and username</span></p>
<p><b style="font-weight: normal">&nbsp;</b></p>
<p dir="ltr" style="line-height: 1.38;text-align: justify;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">El contenido no debe contener muchas definiciones técnicas, recordemos que el objetivo es que todo el equipo se involucre.</span></p>
<p><b style="font-weight: normal">&nbsp;</b></p>
<p dir="ltr" style="line-height: 1.38;text-align: justify;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">Definición de pasos:</span></p>
<p dir="ltr" style="line-height: 1.38;text-align: justify;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&nbsp;</span></p>
<p dir="ltr" style="line-height: 1.38;text-align: justify;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">Given: </span><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">Dada una situación en la que configuramos el test.</span></p>
<p dir="ltr" style="line-height: 1.38;text-align: justify;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">When:</span><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline"> Acción que se realiza o un evento llega.</span></p>
<p dir="ltr" style="line-height: 1.38;text-align: justify;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">Then: </span><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">Espero que suceda algo o puedo comprobarlo.</span></p>
<p><b style="font-weight: normal">&nbsp;</b></p>
<ol style="margin-top: 0;margin-bottom: 0;padding-inline-start: 48px" start="3">
<li dir="ltr" style="list-style-type: decimal;font-size: 16pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">
<p dir="ltr" style="line-height: 1.38;text-align: justify;margin-top: 0pt;margin-bottom: 0pt" role="presentation"><span style="font-size: 16pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">Configuración de puntos de entrada</span></p>
</li>
</ol>
<p><span style="background-color: transparent;color: #000000;font-family: Arial;font-size: 11pt;text-align: justify">La siguiente clase nos sirve como punto de entrada de Cucumber para ejecutar los tests, la podemos llamar de cualquier forma pero siempre tomando en cuenta las convenciones.</span></p>
<p><span style="text-align: justify;background-color: transparent;font-size: 11pt;font-family: Arial;color: #000000;vertical-align: baseline">Creamos la clase </span><span style="text-align: justify;background-color: transparent;font-size: 11pt;font-family: Arial;color: #000000;font-weight: bold;vertical-align: baseline">CucumberTest.java</span><span style="text-align: justify;background-color: transparent;font-size: 11pt;font-family: Arial;color: #000000;vertical-align: baseline"> en </span><span style="text-align: justify;background-color: transparent;font-size: 11pt;font-family: Arial;color: #4a86e8;font-style: italic;vertical-align: baseline">src/test/java/&lt;paquete&gt;/cucumber </span><span style="text-align: justify;background-color: transparent;font-size: 11pt;font-family: Arial;color: #000000;vertical-align: baseline">con el siguiente contenido:</span></p>
<p dir="ltr" style="line-height: 1.6285714285714286;text-align: justify;background-color: #1e1e1e;margin-top: 0pt;margin-bottom: 0pt">
</p><p dir="ltr" style="line-height: 1.6285714285714286;text-align: justify;background-color: #1e1e1e;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 8.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&nbsp;&nbsp;&nbsp;@</span><span style="font-size: 8.5pt;font-family: 'Courier New';color: #4ec9b0;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">Suite</span></p>
<p dir="ltr" style="line-height: 1.6285714285714286;text-align: justify;background-color: #1e1e1e;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 8.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&nbsp;&nbsp;&nbsp;@</span><span style="font-size: 8.5pt;font-family: 'Courier New';color: #4ec9b0;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">IncludeEngines</span><span style="font-size: 8.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">(</span><span style="font-size: 8.5pt;font-family: 'Courier New';color: #ce9178;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&#8220;cucumber&#8221;</span><span style="font-size: 8.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">)</span></p>
<p dir="ltr" style="line-height: 1.6285714285714286;text-align: justify;background-color: #1e1e1e;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 8.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&nbsp;&nbsp;&nbsp;@</span><span style="font-size: 8.5pt;font-family: 'Courier New';color: #4ec9b0;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">SelectClasspathResource</span><span style="font-size: 8.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">(</span><span style="font-size: 8.5pt;font-family: 'Courier New';color: #ce9178;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&#8220;com/sevolutivo/demo/cucumber/features&#8221;</span><span style="font-size: 8.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">)</span></p>
<p dir="ltr" style="line-height: 1.6285714285714286;text-align: justify;background-color: #1e1e1e;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 8.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&nbsp;&nbsp;&nbsp;@</span><span style="font-size: 8.5pt;font-family: 'Courier New';color: #4ec9b0;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">ConfigurationParameter</span><span style="font-size: 8.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">(key = GLUE_PROPERTY_NAME, value = </span><span style="font-size: 8.5pt;font-family: 'Courier New';color: #ce9178;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&#8220;com.sevolutivo.demo.cucumber.stepDefs&#8221;</span><span style="font-size: 8.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">)</span></p>
<p dir="ltr" style="line-height: 1.6285714285714286;text-align: justify;background-color: #1e1e1e;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 8.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&nbsp;&nbsp;&nbsp;</span><span style="font-size: 8.5pt;font-family: 'Courier New';color: #569cd6;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">public</span> <span style="font-size: 8.5pt;font-family: 'Courier New';color: #569cd6;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">class</span> <span style="font-size: 8.5pt;font-family: 'Courier New';color: #4ec9b0;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">CucumberTest</span><span style="font-size: 8.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline"> {</span></p>
<p dir="ltr" style="line-height: 1.6285714285714286;text-align: justify;background-color: #1e1e1e;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 8.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&nbsp;&nbsp;&nbsp;}</span></p>
<p dir="ltr" style="line-height: 1.6285714285714286;text-align: justify;background-color: #1e1e1e;margin-top: 0pt;margin-bottom: 0pt">
</p><p><b style="font-weight: normal">&nbsp;</b></p>
<p dir="ltr" style="line-height: 1.38;text-align: justify;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 10pt;font-family: 'Courier New';color: #000000;background-color: #ffff00;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">@Suite</span><span style="font-size: 10pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline"> y </span><span style="font-size: 10pt;font-family: 'Courier New';color: #000000;background-color: #ffff00;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">@IncludeEngines(&#8220;cucumber&#8221;)</span><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline"> son el equivalente a la antigua </span><span style="font-size: 11pt;font-family: 'Courier New';color: #434343;background-color: transparent;font-weight: bold;font-style: italic;font-variant: normal;text-decoration: none;vertical-align: baseline">@Cucumber</span><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">, pero que con la versión 7 de Cucumber quedó obsoleta.&nbsp;</span></p>
<p dir="ltr" style="line-height: 1.38;text-align: justify;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&nbsp;</span></p>
<p dir="ltr" style="line-height: 1.38;text-align: justify;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">En JUnit 5, podemos definir las opciones de cucumber en el fichero </span><span style="font-size: 10pt;font-family: 'Courier New';color: #000000;background-color: #ffff00;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">junit-platform.properties</span><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">, en la carpeta resources de tests.</span></p>
<p dir="ltr" style="line-height: 1.38;text-align: justify;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&nbsp;</span></p>
<p dir="ltr" style="line-height: 1.38;text-align: justify;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 10pt;font-family: 'Courier New';color: #000000;background-color: #ffff00;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">@SelectClasspathResource(&#8220;&lt;paquete&gt;/cucumber/features&#8221;)</span><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline"> nos dice dentro de la carpeta resources donde tenemos los ficheros </span><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: bold;font-style: italic;font-variant: normal;text-decoration: none;vertical-align: baseline">.feature&nbsp;</span></p>
<p dir="ltr" style="line-height: 1.38;text-align: justify;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: bold;font-style: italic;font-variant: normal;text-decoration: none;vertical-align: baseline">&nbsp;</span></p>
<p><span style="text-align: justify;font-size: 10pt;font-family: 'Courier New';color: #000000;background-color: #ffff00;font-weight: bold;vertical-align: baseline">@ConfigurationParameter(key = GLUE_PROPERTY_NAME, value = &#8220;&lt;paquete&gt;.cucumber.stepDefs&#8221;)</span><span style="text-align: justify;background-color: transparent;font-size: 11pt;font-family: Arial;color: #000000;vertical-align: baseline"> le decimos donde están las clases de pegamento, es decir, los steps.</span></p>
<p><b style="font-weight: normal">&nbsp;</b></p>
<ol style="margin-top: 0;margin-bottom: 0;padding-inline-start: 48px" start="4">
<li dir="ltr" style="list-style-type: decimal;font-size: 16pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">
<p dir="ltr" style="line-height: 1.38;text-align: justify;margin-top: 0pt;margin-bottom: 0pt" role="presentation"><span style="font-size: 16pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">Configuración opcional adicional (junit-platform.properties)</span></p>
</li>
</ol>
<div style="text-align: justify"><font color="#000000" face="Arial"><span style="font-size: 21.3333px"><b><br></b></span></font></div>
<p dir="ltr" style="line-height: 1.38;text-align: justify;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">Creamos el archivo </span><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">junit-platform.properties</span><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline"> en </span><span style="font-size: 11pt;font-family: Arial;color: #4a86e8;background-color: transparent;font-weight: 400;font-style: italic;font-variant: normal;text-decoration: none;vertical-align: baseline">src/test/resources </span><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">con el siguiente contenido:</span></p>
<p><b style="font-weight: normal">&nbsp;</b></p>
<p dir="ltr" style="line-height: 1.6285714285714286;text-align: justify;background-color: #1e1e1e;margin-top: 0pt;margin-bottom: 0pt">
</p><p dir="ltr" style="line-height: 1.6285714285714286;text-align: justify;background-color: #1e1e1e;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 10.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&nbsp;cucumber.publish.quiet=</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #ce9178;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">true</span></p>
<p dir="ltr" style="line-height: 1.6285714285714286;text-align: justify;background-color: #1e1e1e;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 10.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&nbsp;cucumber.publish.enabled=</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #ce9178;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">false</span></p>
<p dir="ltr" style="line-height: 1.6285714285714286;text-align: justify;background-color: #1e1e1e;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 10.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&nbsp;cucumber.plugin=</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #ce9178;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">pretty, html:target/cucumber-reports/Cucumber.html, &nbsp; json:target/cucumber-reports/Cucumber.json,junit:target/cucumber-reports/Cucumber.xml</span></p>
<p dir="ltr" style="line-height: 1.6285714285714286;text-align: justify;background-color: #1e1e1e;margin-top: 0pt;margin-bottom: 0pt">
</p><p><b style="font-weight: normal">&nbsp;</b></p>
<p dir="ltr" style="line-height: 1.38;text-align: justify;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">En el ejemplo anterior, estamos quitando el banner que aparece al ejecutar cucumber y le decimos que no publique los resultados en su servicio de la nube. También estamos generando los informes localmente en formato html, json y xml en el directorio target/cucumber-reports.</span></p>
<p dir="ltr" style="line-height: 1.38;text-align: justify;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&nbsp;</span></p>
<ol style="margin-top: 0;margin-bottom: 0;padding-inline-start: 48px" start="5">
<li dir="ltr" style="list-style-type: decimal;font-size: 16pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">
<p dir="ltr" style="line-height: 1.38;text-align: justify;margin-top: 0pt;margin-bottom: 0pt" role="presentation"><span style="font-size: 16pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">Configuración de Spring</span></p>
</li>
</ol>
<p><b style="font-weight: normal">&nbsp;</b></p>
<p dir="ltr" style="line-height: 1.38;text-align: justify;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">Vamos a configurar Cucumber para que pueda hacer uso del contexto de Spring con la notación </span><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">@SpringBootTest</span><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">, vamos a inyectar también </span><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">TestRestTemplate </span><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">para hacer llamadas Rest.</span></p>
<p dir="ltr" style="line-height: 1.38;text-align: justify;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&nbsp;</span></p>
<p dir="ltr" style="line-height: 1.38;text-align: justify;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">Creamos el archivo </span><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">CucumberSpringConfiguration.java</span><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline"> en </span><span style="font-size: 11pt;font-family: Arial;color: #4a86e8;background-color: transparent;font-weight: 400;font-style: italic;font-variant: normal;text-decoration: none;vertical-align: baseline">src/test/java/&lt;paquete&gt;/cucumber</span><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">:</span></p>
<p><b style="font-weight: normal">&nbsp;</b></p>
<p dir="ltr" style="line-height: 1.6285714285714286;text-align: justify;background-color: #1e1e1e;margin-top: 0pt;margin-bottom: 0pt">
</p><p dir="ltr" style="line-height: 1.6285714285714286;text-align: justify;background-color: #1e1e1e;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 10.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">@</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #4ec9b0;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">SpringBootTest</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">(webEnvironment=</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #9cdcfe;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">SpringBootTest</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">.</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #9cdcfe;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">WebEnvironment</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">.</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #9cdcfe;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">RANDOM_PORT</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">)</span></p>
<p dir="ltr" style="line-height: 1.6285714285714286;text-align: justify;background-color: #1e1e1e;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 10.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&nbsp;&nbsp;&nbsp;</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #569cd6;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">public</span> <span style="font-size: 10.5pt;font-family: 'Courier New';color: #569cd6;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">class</span> <span style="font-size: 10.5pt;font-family: 'Courier New';color: #4ec9b0;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">CucumberSpringConfiguration</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline"> {</span></p>
<p dir="ltr" style="line-height: 1.6285714285714286;text-align: justify;background-color: #1e1e1e;margin-top: 0pt;margin-bottom: 0pt">
</p><p dir="ltr" style="line-height: 1.6285714285714286;text-align: justify;background-color: #1e1e1e;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 10.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #4ec9b0;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">Autowired</span></p>
<p dir="ltr" style="line-height: 1.6285714285714286;text-align: justify;background-color: #1e1e1e;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 10.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #569cd6;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">protected</span> <span style="font-size: 10.5pt;font-family: 'Courier New';color: #4ec9b0;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">TestRestTemplate</span> <span style="font-size: 10.5pt;font-family: 'Courier New';color: #9cdcfe;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">testRestTemplate</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">;</span></p>
<p dir="ltr" style="line-height: 1.6285714285714286;text-align: justify;background-color: #1e1e1e;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 10.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&nbsp;&nbsp;&nbsp;}</span></p>
<p dir="ltr" style="line-height: 1.6285714285714286;text-align: justify;background-color: #1e1e1e;margin-top: 0pt;margin-bottom: 0pt">
</p><p><b style="font-weight: normal">&nbsp;</b></p>
<p dir="ltr" style="line-height: 1.38;text-align: justify;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">Para comprobar el correcto funcionamiento ejecutamos </span><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: #ffff00;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">./mvnw clean verify</span> <span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">en consola y el resultado debería ser similar a lo siguiente:</span></p>
<p><b style="font-weight: normal">&nbsp;</b></p>
<p dir="ltr" style="line-height: 1.38;text-align: justify;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline"><span style="border: none;overflow: hidden;width: 624px;height: 425px"><img decoding="async" style="margin-left: 0px;margin-top: 0px" src="https://lh6.googleusercontent.com/A-uPXAfEVj-8thnTrTS5TFdDBaLlOSiSGxEhWgX891C1gHGHZBAZ8FW6YIfCTicPPC-aKijpAwFcmu-c6jHI61srR4emh1_aG_EAulKbc4Ko19b2W8UqOPm8R48mVjnhqLdHNSFjQbW-S5mc9Kpxw6mELhZy4qyEG4n2sFgcnyQY_3DBYG7Zna5Bp-FCdw" width="624" height="425"></span></span></p>
<p><b style="font-weight: normal">&nbsp;</b></p>
<p dir="ltr" style="line-height: 1.38;text-align: justify;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">Podemos comprobar que no encuentra la definición de pasos y nos sugiere implementarlos de acuerdo a sus recomendaciones.</span></p>
<p><b style="font-weight: normal">&nbsp;</b></p>
<ol style="margin-top: 0;margin-bottom: 0;padding-inline-start: 48px" start="6">
<li dir="ltr" style="list-style-type: decimal;font-size: 16pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">
<p dir="ltr" style="line-height: 1.38;text-align: justify;margin-top: 0pt;margin-bottom: 0pt" role="presentation"><span style="font-size: 16pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">Implementación de pasos (steps ó glue code)</span></p>
</li>
</ol>
<p><b style="font-weight: normal">&nbsp;</b></p>
<p dir="ltr" style="line-height: 1.38;text-align: justify;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">Los pasos o steps es el mapeo de cada paso del escenario definido en el archivo </span><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: italic;font-variant: normal;text-decoration: none;vertical-align: baseline">.feature</span><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">, ésta clase tiene la notación </span><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">@CucumberContextConfiguration</span><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline"> que hace que Cucumber la use como configuración de contexto de Spring.</span></p>
<p dir="ltr" style="line-height: 1.38;text-align: justify;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">Creamos el archivo </span><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">DemoSteps.java</span><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline"> en </span><span style="font-size: 11pt;font-family: Arial;color: #4a86e8;background-color: transparent;font-weight: 400;font-style: italic;font-variant: normal;text-decoration: none;vertical-align: baseline">src/test/&lt;paquete&gt;/cucumber/stepDefs:</span></p>
<p><b style="font-weight: normal">&nbsp;</b></p>
<p dir="ltr" style="line-height: 1.6285714285714286;text-align: justify;background-color: #1e1e1e;margin-top: 0pt;margin-bottom: 0pt">
</p><p dir="ltr" style="line-height: 1.6285714285714286;text-align: justify;background-color: #1e1e1e;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 10.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&nbsp;&nbsp;&nbsp;</span><span style="font-size: 9.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">@</span><span style="font-size: 9.5pt;font-family: 'Courier New';color: #4ec9b0;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">CucumberContextConfiguration</span></p>
<p dir="ltr" style="line-height: 1.6285714285714286;text-align: justify;background-color: #1e1e1e;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 9.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&nbsp;&nbsp;&nbsp;</span><span style="font-size: 9.5pt;font-family: 'Courier New';color: #569cd6;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">public</span> <span style="font-size: 9.5pt;font-family: 'Courier New';color: #569cd6;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">class</span> <span style="font-size: 9.5pt;font-family: 'Courier New';color: #4ec9b0;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">DemoSteps</span> <span style="font-size: 9.5pt;font-family: 'Courier New';color: #569cd6;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">extends</span> <span style="font-size: 9.5pt;font-family: 'Courier New';color: #4ec9b0;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">CucumberSpringConfiguration</span><span style="font-size: 9.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline"> {</span></p>
<p dir="ltr" style="line-height: 1.6285714285714286;text-align: justify;background-color: #1e1e1e;margin-top: 0pt;margin-bottom: 0pt">
</p><p dir="ltr" style="line-height: 1.6285714285714286;text-align: justify;background-color: #1e1e1e;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 9.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 9.5pt;font-family: 'Courier New';color: #569cd6;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">private</span> <span style="font-size: 9.5pt;font-family: 'Courier New';color: #4ec9b0;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">String</span> <span style="font-size: 9.5pt;font-family: 'Courier New';color: #9cdcfe;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">username</span><span style="font-size: 9.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">;</span></p>
<p dir="ltr" style="line-height: 1.6285714285714286;text-align: justify;background-color: #1e1e1e;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 9.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 9.5pt;font-family: 'Courier New';color: #569cd6;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">private</span> <span style="font-size: 9.5pt;font-family: 'Courier New';color: #4ec9b0;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">ResponseEntity</span> <span style="font-size: 9.5pt;font-family: 'Courier New';color: #9cdcfe;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">response</span><span style="font-size: 9.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">;</span></p>
<p dir="ltr" style="line-height: 1.6285714285714286;text-align: justify;background-color: #1e1e1e;margin-top: 0pt;margin-bottom: 0pt">
</p><p dir="ltr" style="line-height: 1.6285714285714286;text-align: justify;background-color: #1e1e1e;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 9.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@</span><span style="font-size: 9.5pt;font-family: 'Courier New';color: #4ec9b0;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">Given</span><span style="font-size: 9.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">(</span><span style="font-size: 9.5pt;font-family: 'Courier New';color: #ce9178;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&#8220;client wants to write username&#8221;</span><span style="font-size: 9.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">)</span></p>
<p dir="ltr" style="line-height: 1.6285714285714286;text-align: justify;background-color: #1e1e1e;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 9.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 9.5pt;font-family: 'Courier New';color: #569cd6;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">public</span> <span style="font-size: 9.5pt;font-family: 'Courier New';color: #4ec9b0;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">void</span> <span style="font-size: 9.5pt;font-family: 'Courier New';color: #dcdcaa;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">clientWantsToWriteAGreeting</span><span style="font-size: 9.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">(){</span></p>
<p dir="ltr" style="line-height: 1.6285714285714286;text-align: justify;background-color: #1e1e1e;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 9.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;username = </span><span style="font-size: 9.5pt;font-family: 'Courier New';color: #ce9178;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&#8220;user001&#8221;</span><span style="font-size: 9.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">;</span></p>
<p dir="ltr" style="line-height: 1.6285714285714286;text-align: justify;background-color: #1e1e1e;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 9.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></p>
<p dir="ltr" style="line-height: 1.6285714285714286;text-align: justify;background-color: #1e1e1e;margin-top: 0pt;margin-bottom: 0pt">
</p><p dir="ltr" style="line-height: 1.6285714285714286;text-align: justify;background-color: #1e1e1e;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 9.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@</span><span style="font-size: 9.5pt;font-family: 'Courier New';color: #4ec9b0;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">When</span><span style="font-size: 9.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">(</span><span style="font-size: 9.5pt;font-family: 'Courier New';color: #ce9178;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&#8220;client calls greeting endpoint&#8221;</span><span style="font-size: 9.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">)</span></p>
<p dir="ltr" style="line-height: 1.6285714285714286;text-align: justify;background-color: #1e1e1e;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 9.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 9.5pt;font-family: 'Courier New';color: #569cd6;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">public</span> <span style="font-size: 9.5pt;font-family: 'Courier New';color: #4ec9b0;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">void</span> <span style="font-size: 9.5pt;font-family: 'Courier New';color: #dcdcaa;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">clientCallsToGreetingEndpoint</span><span style="font-size: 9.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">() {</span></p>
<p dir="ltr" style="line-height: 1.6285714285714286;text-align: justify;background-color: #1e1e1e;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 9.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;response = </span><span style="font-size: 9.5pt;font-family: 'Courier New';color: #9cdcfe;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">testRestTemplate</span><span style="font-size: 9.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">.</span><span style="font-size: 9.5pt;font-family: 'Courier New';color: #dcdcaa;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">getForEntity</span><span style="font-size: 9.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">(</span><span style="font-size: 9.5pt;font-family: 'Courier New';color: #ce9178;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&#8220;/greeting/&#8221;</span><span style="font-size: 9.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline"> + username, </span><span style="font-size: 9.5pt;font-family: 'Courier New';color: #9cdcfe;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">String</span><span style="font-size: 9.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">.</span><span style="font-size: 9.5pt;font-family: 'Courier New';color: #9cdcfe;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">class</span><span style="font-size: 9.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">);</span></p>
<p dir="ltr" style="line-height: 1.6285714285714286;text-align: justify;background-color: #1e1e1e;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 9.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></p>
<p dir="ltr" style="line-height: 1.6285714285714286;text-align: justify;background-color: #1e1e1e;margin-top: 0pt;margin-bottom: 0pt">
</p><p dir="ltr" style="line-height: 1.6285714285714286;text-align: justify;background-color: #1e1e1e;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 9.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@</span><span style="font-size: 9.5pt;font-family: 'Courier New';color: #4ec9b0;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">Then</span><span style="font-size: 9.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">(</span><span style="font-size: 9.5pt;font-family: 'Courier New';color: #ce9178;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&#8220;client receives hello text and username&#8221;</span><span style="font-size: 9.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">)</span></p>
<p dir="ltr" style="line-height: 1.6285714285714286;text-align: justify;background-color: #1e1e1e;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 9.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 9.5pt;font-family: 'Courier New';color: #569cd6;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">public</span> <span style="font-size: 9.5pt;font-family: 'Courier New';color: #4ec9b0;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">void</span> <span style="font-size: 9.5pt;font-family: 'Courier New';color: #dcdcaa;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">clientReceivesHelloTextAndGreeting</span><span style="font-size: 9.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">() {</span></p>
<p dir="ltr" style="line-height: 1.6285714285714286;text-align: justify;background-color: #1e1e1e;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 9.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 9.5pt;font-family: 'Courier New';color: #9cdcfe;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">Assertions</span><span style="font-size: 9.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">.</span><span style="font-size: 9.5pt;font-family: 'Courier New';color: #dcdcaa;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">assertEquals</span><span style="font-size: 9.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">(</span><span style="font-size: 9.5pt;font-family: 'Courier New';color: #ce9178;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&#8220;hello &#8220;</span><span style="font-size: 9.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline"> + username, </span><span style="font-size: 9.5pt;font-family: 'Courier New';color: #9cdcfe;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">response</span><span style="font-size: 9.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">.</span><span style="font-size: 9.5pt;font-family: 'Courier New';color: #dcdcaa;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">getBody</span><span style="font-size: 9.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">());</span></p>
<p dir="ltr" style="line-height: 1.6285714285714286;text-align: justify;background-color: #1e1e1e;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 9.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></p>
<p dir="ltr" style="line-height: 1.6285714285714286;text-align: justify;background-color: #1e1e1e;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 9.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&nbsp;&nbsp;&nbsp;}</span></p>
<p><b style="font-weight: normal">&nbsp;</b></p>
<ol style="margin-top: 0;margin-bottom: 0;padding-inline-start: 48px" start="7">
<li dir="ltr" style="list-style-type: decimal;font-size: 16pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">
<p dir="ltr" style="line-height: 1.38;text-align: justify;margin-top: 0pt;margin-bottom: 0pt" role="presentation"><span style="font-size: 16pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">Implementación de Rest API controller</span></p>
</li>
</ol>
<p><b style="font-weight: normal">&nbsp;</b></p>
<p dir="ltr" style="line-height: 1.38;text-align: justify;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">Creamos una clase controlador </span><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">DemoController.java</span><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline"> con un método GET /greeting en </span><span style="font-size: 11pt;font-family: Arial;color: #4a86e8;background-color: transparent;font-weight: 400;font-style: italic;font-variant: normal;text-decoration: none;vertical-align: baseline">src/main/java/&lt;paquete&gt;/web</span><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline"> que retorna una cadena con un saludo:</span></p>
<p><b style="font-weight: normal">&nbsp;</b></p>
<p dir="ltr" style="line-height: 1.6285714285714286;text-align: justify;background-color: #1e1e1e;margin-top: 0pt;margin-bottom: 0pt">
</p><p dir="ltr" style="line-height: 1.6285714285714286;text-align: justify;background-color: #1e1e1e;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 10.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&nbsp;&nbsp;&nbsp;@</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #4ec9b0;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">RestController</span></p>
<p dir="ltr" style="line-height: 1.6285714285714286;text-align: justify;background-color: #1e1e1e;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 10.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&nbsp;&nbsp;&nbsp;</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #569cd6;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">public</span> <span style="font-size: 10.5pt;font-family: 'Courier New';color: #569cd6;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">class</span> <span style="font-size: 10.5pt;font-family: 'Courier New';color: #4ec9b0;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">DemoController</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline"> {</span></p>
<p dir="ltr" style="line-height: 1.6285714285714286;text-align: justify;background-color: #1e1e1e;margin-top: 0pt;margin-bottom: 0pt">
</p><p dir="ltr" style="line-height: 1.6285714285714286;text-align: justify;background-color: #1e1e1e;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 10.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #4ec9b0;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">GetMapping</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">(</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #ce9178;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&#8220;/greeting/{username}&#8221;</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">)</span></p>
<p dir="ltr" style="line-height: 1.6285714285714286;text-align: justify;background-color: #1e1e1e;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 10.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #569cd6;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">public</span> <span style="font-size: 10.5pt;font-family: 'Courier New';color: #4ec9b0;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">String</span> <span style="font-size: 10.5pt;font-family: 'Courier New';color: #dcdcaa;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">greeting</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">(@</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #4ec9b0;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">PathVariable</span> <span style="font-size: 10.5pt;font-family: 'Courier New';color: #4ec9b0;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">String</span> <span style="font-size: 10.5pt;font-family: 'Courier New';color: #9cdcfe;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">username</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">){</span></p>
<p dir="ltr" style="line-height: 1.6285714285714286;text-align: justify;background-color: #1e1e1e;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 10.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #c586c0;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">return</span> <span style="font-size: 10.5pt;font-family: 'Courier New';color: #ce9178;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&#8220;hello &#8220;</span><span style="font-size: 10.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline"> + username;</span></p>
<p dir="ltr" style="line-height: 1.6285714285714286;text-align: justify;background-color: #1e1e1e;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 10.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></p>
<p dir="ltr" style="line-height: 1.6285714285714286;text-align: justify;background-color: #1e1e1e;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 10.5pt;font-family: 'Courier New';color: #d4d4d4;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">&nbsp;&nbsp;&nbsp;}</span></p>
<p dir="ltr" style="line-height: 1.6285714285714286;text-align: justify;background-color: #1e1e1e;margin-top: 0pt;margin-bottom: 0pt">
</p><p><b style="font-weight: normal"></b></p>
<p><b style="font-weight: normal"><br></b></p>
<p><b style="font-weight: normal"></b></p>
<ol style="margin-top: 0;margin-bottom: 0;padding-inline-start: 48px" start="8">
<li dir="ltr" style="list-style-type: decimal;font-size: 16pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">
<p dir="ltr" style="line-height: 1.38;text-align: justify;margin-top: 0pt;margin-bottom: 0pt" role="presentation"><span style="font-size: 16pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">Ejecución</span></p>
</li>
</ol>
<p><b style="font-weight: normal">&nbsp;</b></p>
<p dir="ltr" style="line-height: 1.38;text-align: justify;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">Una vez listo toda la implementación, ejecutar </span><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: #ffff00;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">./mvnw clean verify</span> <span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">y obtendremos lo siguiente:</span></p>
<p><b style="font-weight: normal">&nbsp;</b></p>
<p dir="ltr" style="line-height: 1.38;text-align: justify;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline"><span style="border: none;overflow: hidden;width: 702px;height: 313px"><img decoding="async" style="margin-left: 0px;margin-top: 0px" src="https://lh6.googleusercontent.com/Q9I6lUDruL8SJqW4CmCl7UXGGJ0fT74tUK_OtqBpnJbXoycyddTDg6qP9e2Q0XcL6stHTq9wFr4fUbMz_JWzGIWNNnBJ0hWr5R6C3GRBTM7kCThi8BrNCwaF_zgt-NOOQHqBmn1IiLddY7KbHqGhBtWdRkhTOjXHD8K6YobeUpdbwUVoV0yJoOvt32IM1g" width="702" height="313"></span></span></p>
<p><b style="font-weight: normal">&nbsp;</b></p>
<p dir="ltr" style="line-height: 1.38;text-align: justify;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">Si se usa IntelliJ Idea, al ejecutar los test de Cucumber implementados, como resultado se obtendrá algo similar a esto:</span></p>
<p><b style="font-weight: normal">&nbsp;</b></p>
<p dir="ltr" style="line-height: 1.38;text-align: justify;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 16pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline"><span style="border: none;overflow: hidden;width: 474px;height: 179px"><img loading="lazy" decoding="async" style="margin-left: 0px;margin-top: 0px" src="https://lh5.googleusercontent.com/ln0j_Ef8X-pqzln2SndI6S-ziZoFAuKXY7GJLZGdI2SMwo46JPkJQnKHees8HB0bl_io_yA0VcsSNpUEVWJUAsSlrmrFzWk-WU5dQTMTIgREla549knDl4TokFNOGno_O-YUzTkGO05u2u-zSeByj5zi0wdC28f1D6J9vTYjowW50KyliLJkIj4i2tnJ5w" width="474" height="179"></span></span></p>
<p><b style="font-weight: normal">&nbsp;</b></p>
<ol style="margin-top: 0;margin-bottom: 0;padding-inline-start: 48px" start="9">
<li dir="ltr" style="list-style-type: decimal;font-size: 16pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">
<p dir="ltr" style="line-height: 1.38;text-align: justify;margin-top: 0pt;margin-bottom: 0pt" role="presentation"><span style="font-size: 16pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: bold;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">Conclusiones</span></p>
</li>
</ol>
<p><b style="font-weight: normal">&nbsp;</b></p>
<p dir="ltr" style="line-height: 1.38;text-align: justify;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">Los tests de aceptación son una herramienta importante si el objetivo es integrar al equipo de negocio y al equipo de desarrollo, mejorando así el planteamiento de los escenarios, requerimientos y casos de análisis.&nbsp;</span></p>
<p><b style="font-weight: normal">&nbsp;</b></p>
<p dir="ltr" style="line-height: 1.38;text-align: justify;margin-top: 0pt;margin-bottom: 0pt"><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: 400;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">En éste tutorial hemos planteado un caso básico de implementación y la configuración de Cucumber, Spring Boot y JUnit 5 y así obtener una arquitectura básica o referencial para futuras implementaciones.</span></p>
<p><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;vertical-align: baseline">El código fuente se puede encontrar en </span><a href="https://github.com/softwareevolutivo/spring-boot-cucumber" target="_blank">github.com</a><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;vertical-align: baseline">.</span></p>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				</div>
		<p>The post <a href="https://softwareevolutivo.com.ec/cucumber-spring-boot-2-junit-5/">Cucumber + Spring boot 2 + Junit 5</a> appeared first on <a href="https://softwareevolutivo.com.ec">Software Evolutivo</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://softwareevolutivo.com.ec/cucumber-spring-boot-2-junit-5/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>[:es]Desarrollo de aplicaciones Web con Spring Boot[:]</title>
		<link>https://softwareevolutivo.com.ec/espanol-desarrollo-de-aplicaciones-web-con-spring-boot/</link>
					<comments>https://softwareevolutivo.com.ec/espanol-desarrollo-de-aplicaciones-web-con-spring-boot/#respond</comments>
		
		<dc:creator><![CDATA[Jorge Aguilar]]></dc:creator>
		<pubDate>Mon, 14 Aug 2017 13:57:44 +0000</pubDate>
				<category><![CDATA[Desarrollo de Software]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[maven]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[rest]]></category>
		<category><![CDATA[spring]]></category>
		<category><![CDATA[springboot]]></category>
		<guid isPermaLink="false">https://softwareevolutivo.com.ec/?p=201</guid>

					<description><![CDATA[<p>Según el sitio oficial del proyecto, se puede definir Spring Boot de la siguiente manera: «Es una solución para crear aplicaciones basadas en Spring de una manera rápida, autónoma y con características deseables para producción». Al momento, resulta de mucho interés contar con herramientas que apoyen al desarrollo rápido de aplicaciones. Y ésta es la</p>
<p>The post <a href="https://softwareevolutivo.com.ec/espanol-desarrollo-de-aplicaciones-web-con-spring-boot/">[:es]Desarrollo de aplicaciones Web con Spring Boot[:]</a> appeared first on <a href="https://softwareevolutivo.com.ec">Software Evolutivo</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="201" class="elementor elementor-201">
						<section class="elementor-section elementor-top-section elementor-element elementor-element-522bf39f elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="522bf39f" data-element_type="section" data-e-type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-1913959f" data-id="1913959f" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-1df6ecf7 elementor-widget elementor-widget-text-editor" data-id="1df6ecf7" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>[:es]<img loading="lazy" decoding="async" class="size-medium aligncenter" src="http://assets.spring.io/wp/wp-content/uploads/2013/08/spring.png" width="379" height="369">Según el sitio oficial del proyecto, se puede definir <a href="https://projects.spring.io/spring-boot/" target="_blank" rel="noopener noreferrer">Spring Boot</a> de la siguiente manera: &#8220;Es una solución para crear aplicaciones basadas en Spring de una manera rápida, autónoma y con características deseables para producción&#8221;.</p>
<p>Al momento, resulta de mucho interés contar con herramientas que apoyen al desarrollo rápido de aplicaciones. Y ésta es la motivación principal para presentar esta primera entrada sobre el tema.</p>
<p>Entre las principales características de Spring Boot se encuentran:</p>
<ul>
<li>Contenedores Java embebidos: Tomcat o Jetty</li>
<li>Soporte para la automatización con Maven y Gradle</li>
<li>Configuración sugerida para iniciar rápidamente con un proyecto (Starters)</li>
<li>Configura automáticamente Spring, cuando sea posible</li>
<li>Características listas para producción: métricas, seguridad, verificación del estatus, externalización de configuración, etc.</li>
<li>No genera código y no requiere configuración XML</li>
</ul>
<h3>Alcance</h3>
<p>En este proyecto se creará un servicio <a href="https://en.wikipedia.org/wiki/Representational_state_transfer" target="_blank" rel="noopener noreferrer">REST</a> de consulta de productos que retorne la respuesta en formato <a href="https://en.wikipedia.org/wiki/JSON" target="_blank" rel="noopener noreferrer">JSON</a> utilizando <a href="https://maven.apache.org/" target="_blank" rel="noopener noreferrer">Maven</a> como herramienta de automatización de tareas.</p>
<h3>Herramientas Utilizadas</h3>
<p>Se requieren instaladas y disponibles las siguientes herramientas:</p>
<ul>
<li>Java 8</li>
<li>Maven 3.2 o superior</li>
</ul>
<h3>Procedimiento</h3>
<p>A continuación se detallan los pasos a seguir para conseguir el objetivo planteado. Si se desea acceder al <b>proyecto terminado</b>, ya sea para ejecutarlo directamente o para resolver alguna duda, éste está disponible en:</p>
<p><a href="https://github.com/softwareevolutivo/springboot-gs" target="_blank" rel="noopener noreferrer">https://github.com/softwareevolutivo/springboot-gs</a></p>
<h4>1. Configuración inicial del proyecto utilizando Maven</h4>
<p>Lo primero que se deberá realizar es crear el <strong>directorio del proyecto</strong>. En este caso se lo ha nombrado <b>springboot-gs</b>.<br>Dentro de este directorio crear el archivo POM (pom.xml) inicial, el cual deberá tener la siguiente definición.</p>
<pre class="EnlighterJSRAW" data-enlighter-language="xml">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"&gt;
    &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;

    &lt;groupId&gt;ec.com.softwareevolutivo.demos&lt;/groupId&gt;
    &lt;artifactId&gt;springbootgs&lt;/artifactId&gt;
    &lt;version&gt;0.0.1-SNAPSHOT&lt;/version&gt;
    &lt;name&gt;springbootgs&lt;/name&gt;
    &lt;description&gt;Spring Boot Getting Started&lt;/description&gt;

    &lt;parent&gt;
        &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
        &lt;artifactId&gt;spring-boot-starter-parent&lt;/artifactId&gt;
        &lt;version&gt;1.5.2.RELEASE&lt;/version&gt;
    &lt;/parent&gt;

&lt;/project&gt;</pre>
<p>En este primer paso se ha creado la relación de nuestro proyecto con el proyecto padre <b>spring-boot-starter-parent</b> utilizando la versión <b>1.5.2.RELEASE</b>. Esta simple definición permite a nuestro proyecto hacer ya uso de algunas funcionalidades de <strong>Spring Boot</strong>.</p>
<p>Estos grupos de funcionalidades son denominados <b>Starters</b>, más adelante se incorporará al proyecto un Starter adicional.</p>
<p>Para validar que todo está correctamente configurado ejecutamos un primer empaquetado utilizando Maven dentro del directorio del proyecto:</p>
<p><code>mvn package</code></p>
<p>El resultado de esta ejecución será la creación del directorio <b>target</b>, el cual deberá contener el archivo empaquetado del proyecto: <b>springboot-gs-0.0.1-SNAPSHOT.jar</b></p>
<p>Para finalizar esta primera parte, procederemos a consultar las dependencias con las que cuenta el proyecto:</p>
<p><code>mvn dependency:tree</code></p>
<p>En la salida de este comando no se verá ninguna dependencia relacionado al proyecto:</p>
<p><code>...<br>[INFO]<br>[INFO] --- maven-dependency-plugin:2.10:tree (default-cli) @ springbootgs ---<br>[INFO] ec.com.softwareevolutivo.demos:springbootgs:jar:0.0.1-SNAPSHOT<br>[INFO] ------------------------------------------------------------------------<br>[INFO] BUILD SUCCESS<br>...</code></p>
<h4>2. Dependencia Web</h4>
<p>Como el objetivo de esta demo incluye la creación de un servicio REST será necesario incorporar las dependencias Web de Spring. Esto se lo consigue adicionando al archivo POM el Starter respectivo, en este caso <b>spring-boot-starter-web</b> después de la sección <strong>parent</strong>.<b><br></b></p>
<pre class="EnlighterJSRAW" data-enlighter-language="xml">    ...
    &lt;/parent&gt;

    &lt;dependencies&gt;
        &lt;dependency&gt;
            &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
            &lt;artifactId&gt;spring-boot-starter-web&lt;/artifactId&gt;
        &lt;/dependency&gt;
    &lt;/dependencies&gt;

&lt;/project&gt;</pre>
<p>Ejecutamos nuevamente la consulta de dependencias del proyecto:</p>
<p><code class="prettyprint lang-sh" data-start-line="1" data-visibility="visible" data-highlight="" data-caption="">mvn dependency:tree</code></p>
<p>Y en esta ocasión ya podremos ver las dependencias incorporadas al proyecto por medio del <strong>Starter Web</strong>. Es importante resaltar el hecho de que las versiones de las librerías incorporadas por el Starter son resueltas de manera automática.<br><code><br>...<br>[INFO]<br>[INFO] --- maven-dependency-plugin:2.10:tree (default-cli) @ springbootgs ---<br>[INFO] ec.com.softwareevolutivo.demos:springbootgs:jar:0.0.1-SNAPSHOT<br>[INFO] \- org.springframework.boot:spring-boot-starter-web:jar:1.5.2.RELEASE:compile<br>[INFO]    +- org.springframework.boot:spring-boot-starter:jar:1.5.2.RELEASE:compile<br>[INFO]    |  +- org.springframework.boot:spring-boot:jar:1.5.2.RELEASE:compile<br>[INFO]    |  +- org.springframework.boot:spring-boot-autoconfigure:jar:1.5.2.RELEASE:compile<br>[INFO]    |  +- org.springframework.boot:spring-boot-starter-logging:jar:1.5.2.RELEASE:compile<br>[INFO]    |  |  +- ch.qos.logback:logback-classic:jar:1.1.11:compile<br>[INFO]    |  |  |  +- ch.qos.logback:logback-core:jar:1.1.11:compile<br>[INFO]    |  |  |  \- org.slf4j:slf4j-api:jar:1.7.24:compile<br>[INFO]    |  |  +- org.slf4j:jcl-over-slf4j:jar:1.7.24:compile<br>[INFO]    |  |  +- org.slf4j:jul-to-slf4j:jar:1.7.24:compile<br>[INFO]    |  |  \- org.slf4j:log4j-over-slf4j:jar:1.7.24:compile<br>[INFO]    |  +- org.springframework:spring-core:jar:4.3.7.RELEASE:compile<br>[INFO]    |  \- org.yaml:snakeyaml:jar:1.17:runtime<br>[INFO]    +- org.springframework.boot:spring-boot-starter-tomcat:jar:1.5.2.RELEASE:compile<br>[INFO]    |  +- org.apache.tomcat.embed:tomcat-embed-core:jar:8.5.11:compile<br>[INFO]    |  +- org.apache.tomcat.embed:tomcat-embed-el:jar:8.5.11:compile<br>[INFO]    |  \- org.apache.tomcat.embed:tomcat-embed-websocket:jar:8.5.11:compile<br>[INFO]    +- org.hibernate:hibernate-validator:jar:5.3.4.Final:compile<br>[INFO]    |  +- javax.validation:validation-api:jar:1.1.0.Final:compile<br>[INFO]    |  +- org.jboss.logging:jboss-logging:jar:3.3.0.Final:compile<br>[INFO]    |  \- com.fasterxml:classmate:jar:1.3.3:compile<br>[INFO]    +- com.fasterxml.jackson.core:jackson-databind:jar:2.8.7:compile<br>[INFO]    |  +- com.fasterxml.jackson.core:jackson-annotations:jar:2.8.0:compile<br>[INFO]    |  \- com.fasterxml.jackson.core:jackson-core:jar:2.8.7:compile<br>[INFO]    +- org.springframework:spring-web:jar:4.3.7.RELEASE:compile<br>[INFO]    |  +- org.springframework:spring-aop:jar:4.3.7.RELEASE:compile<br>[INFO]    |  +- org.springframework:spring-beans:jar:4.3.7.RELEASE:compile<br>[INFO]    |  \- org.springframework:spring-context:jar:4.3.7.RELEASE:compile<br>[INFO]    \- org.springframework:spring-webmvc:jar:4.3.7.RELEASE:compile<br>[INFO]       \- org.springframework:spring-expression:jar:4.3.7.RELEASE:compile<br>[INFO] ------------------------------------------------------------------------<br>[INFO] BUILD SUCCESS<br></code></p>
<h4>3. La aplicación Spring Boot</h4>
<p>Para que la aplicación <strong>Spring Boot</strong> pueda ejecutarse desde la línea de comandos, se requiere la definición del conocido método <b>main</b>. Este método será utilizado por Spring Boot para iniciar la aplicación. Esto es esencial para que la aplicación se ejecute en modo stand-alone.</p>
<p>Esto se lo puede realizar creando una clase (<b>Application</b> en este caso) que implemente este método y que haga la llamada al método <b>run</b> de la clase <b>SpringApplication</b>.</p>
<p>Por convención, todas las clases Java deberán estar almacenadas en el directorio <b>src/main/java</b> dentro del directorio del proyecto. Hay que recordar que este archivo también debe residir dentro de un directorio correspondiente al paquete, en este caso <strong><span class="">ec/</span><span class="me0">com/</span><span class="me0">softwareevolutivo/</span><span class="me0">demos/</span><span class="me0">springbootgs</span></strong></p>
<pre class="EnlighterJSRAW" data-enlighter-language="java">package ec.com.softwareevolutivo.demos.springbootgs;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
    
}</pre>
<p>En este punto ya se podrá ejecutar la aplicación a través de Maven desde el directorio principal del proyecto:</p>
<p><code>mvn spring-boot:run</code></p>
<p>Esta ejecución levanta un servidor Web que escucha en el puerto por defecto <strong>8080</strong>. Se lo puede detener utilizando la combinación de teclas <strong>Control + C</strong>.</p>
<h4>4. Clase del dominio</h4>
<p>La clase <b>Product</b> será utilizada como parte del dominio del tipo <a href="https://en.wikipedia.org/wiki/Data_transfer_object" target="_blank" rel="noopener noreferrer">DTO</a> y tendrá la información correspondiente a cada producto de la lista que se desea retornar.</p>
<pre class="EnlighterJSRAW" data-enlighter-language="java">package ec.com.softwareevolutivo.demos.springbootgs.domain.dto;

public class Product {

    private Long id;
    private String name;
    private double price;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }

}</pre>
<h4>5. Servicio REST</h4>
<p>En este punto se procederá a crear el servicio REST que retornará la lista de productos en formato JSON. La clase <b>ProductRest</b> será utilizada para retornar la lista de productos.</p>
<pre class="EnlighterJSRAW" data-enlighter-language="java">package ec.com.softwareevolutivo.demos.springbootgs.web.rest;

import java.util.ArrayList;
import java.util.List;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import ec.com.softwareevolutivo.demos.springbootgs.domain.dto.Product;

@RestController
@RequestMapping("/api")
public class ProductRest {

      @GetMapping("/products")
      public List&lt;Product&gt; getAllProducts() {
        
          List&lt;Product&gt; productList = new ArrayList&lt;Product&gt;();
          
          Product product1 = new Product();
          product1.setId(1L);
          product1.setName("Product 1");
          product1.setPrice(22.99);
          productList.add(product1);
          
          Product product2 = new Product();
          product2.setId(2L);
          product2.setName("Product 2");
          product2.setPrice(3.49);
          productList.add(product2);
          
          return productList;
          
      }
}</pre>
<p>Las anotaciones <b>@RestController</b>, <b>@RequestMapping</b> y <b>@GetMapping</b> pertenecen a Spring Web MVC y son utilizadas para crear el servicio REST.</p>
<p>Ejecutar nuevamente la aplicación y validar que el servicio REST esté operativo:</p>
<p><code>mvn spring-boot:run</code></p>
<p>Según lo establecido en la clase <b>ProductRest</b> parte del URL para acceder al servicio REST sería <strong>api/products</strong> y en este caso el servicio estaría disponible en <a href="http://localhost:8080/api/products" target="_blank" rel="noopener noreferrer">http://localhost:8080/api/products</a>.</p>
<p>Utilizando un navegador Web se podrá ver la respuesta del servicio REST:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="json">[
   {
      "id": 1
      "name": "Product 1",
      "price": 22.99
   },
   {
      "id": 1,
      "name": "Product 2",
      "price": 3.49
   }
]</pre>
<h4>6. Crear el ejecutable</h4>
<p>Para facilitar la transferencia de la aplicación en un solo empaquetado se puede convertir el archivo empaquetado <b>jar</b> en ejecutable. Esto se lo realiza por medio del plugin <b>spring-boot-maven-plugin</b>, el cual deberá ser adicionado a la configuración de maven.</p>
<pre class="EnlighterJSRAW" data-enlighter-language="xml">    ...
    &lt;/dependencies&gt;

    &lt;build&gt;
        &lt;plugins&gt;
            &lt;plugin&gt;
                &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
                &lt;artifactId&gt;spring-boot-maven-plugin&lt;/artifactId&gt;
            &lt;/plugin&gt;
        &lt;/plugins&gt;
    &lt;/build&gt;

&lt;/project&gt;</pre>
<p>Como ya se lo hizo inicialmente, proceder con creación del empaquetado:</p>
<p><code>mvn package</code></p>
<p>En el directorio <b>target</b> deberán existir dos archivos empaquetados del proyecto:</p>
<ul>
<li>El archivo <b>springbootgs-0.0.1-SNAPSHOT.jar.original</b> solamente contiene las clases creadas para el proyecto y un par de archivos de metadata.</li>
<li>Por otro lado, el archivo <b>springbootgs-0.0.1-SNAPSHOT.jar</b>, de mayor tamaño, incluye todas las dependencias requeridas para ejecutar la aplicación en modo stand-alone.</li>
</ul>
<p>La ejecución de la aplicación <strong>stand-alone</strong> se la puede realizar utilizando Java Standard Edition (SE):</p>
<p><code>java -jar target/springboot-gs-0.0.1-SNAPSHOT.jar</code></p>
<h3>Resumen y conclusiones</h3>
<ul>
<li>Utilizando soluciones como <strong>Spring Boot</strong> se podría reducir considerablemente el tiempo de desarrollo de aplicaciones Web con servicios REST.</li>
<li>Spring Boot ha tenido un crecimiento importante en los últimos años. Generadores como <a href="https://jhipster.github.io/">JHipster</a> la están usando ampliamente.</li>
<li>En esta entrega se ha presentado Spring Boot de tal manera que el lector pueda empezar en su uso. En próximas entregas se podrá tratar otras de las ventajas que presenta la herramienta.</li>
</ul>
<h3>Referencias</h3>
<ul>
<li><a href="https://spring.io/guides/gs/spring-boot/" target="_blank" rel="noopener noreferrer">https://spring.io/guides/gs/spring-boot/</a></li>
<li><a href="https://spring.io/guides/gs/rest-service/" target="_blank" rel="noopener noreferrer">https://spring.io/guides/gs/rest-service/</a></li>
<li><a href="http://docs.spring.io/spring-boot/docs/1.5.2.RELEASE/reference/htmlsingle/" target="_blank" rel="noopener noreferrer">http://docs.spring.io/spring-boot/docs/1.5.2.RELEASE/reference/htmlsingle/</a></li>
</ul>
<p>En el caso de presentarse dudas, comentarios, erratas 🙂 los animamos a comentar. Recordar que también se puede compartir esta entrada por las redes sociales.[:]</p>
<p></p>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				</div>
		<p>The post <a href="https://softwareevolutivo.com.ec/espanol-desarrollo-de-aplicaciones-web-con-spring-boot/">[:es]Desarrollo de aplicaciones Web con Spring Boot[:]</a> appeared first on <a href="https://softwareevolutivo.com.ec">Software Evolutivo</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://softwareevolutivo.com.ec/espanol-desarrollo-de-aplicaciones-web-con-spring-boot/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
