Ahora puede abrir su IDE favorito e importar el proyecto como Maven Project
. Una vez que haya importado el proyecto a su IDE, la estructura del proyecto debería verse así:
firstapp
/-- .pipeline
| |-- config.yml
+-- application [firstapp-application]
+-- cx-server
+-- integration-tests [firstapp-integration-tests]
|-- Jenkinsfile
|-- manifest.yml
|-- pom.xml
Lo primero que notará son los distintos directorios:
.pipeline
application [firstapp-application]
cx-server
integration-tests [firstapp-integration-tests]
Hay dos submódulos de Maven application [firstapp-application]
y integration-tests [firstapp-integration-tests]
, que se ocupa de varios aspectos del código, las pruebas y la implementación de su aplicación. Debido a la siguiente separación de módulos, es posible ejecutar pruebas unitarias dedicadas y pruebas de integración sensibles sin utilizar la aplicación.
Además, hay scripts de utilidades dentro del cx-server
directorio que se puede utilizar para la implementación y las pruebas locales, así como un archivo de configuración para su Jenkins
construir una tubería i .pipeline
.
Proyecto de varios módulos
La ventaja de operar un proyecto de varios módulos para una aplicación es obvia una vez que aumenta la complejidad del software. Entonces resulta conveniente delegar la distribución de código y la responsabilidad a los desarrolladores para una aplicación o entorno de prueba. Para obtener confiabilidad y continuidad, encontrará que las pruebas de front-end y la automatización de pruebas son tan importantes como las pruebas clásicas de back-end para proyectos. Estas áreas de especialización requieren diferentes paradigmas de programación, así como diferentes tipos de ciclos de vida de desarrollo. Para garantizar la estabilidad y confiabilidad generales del software, la configuración de varios módulos es la solución de mejores prácticas.
Para comenzar, echemos un vistazo al proyecto de aplicación típico, así como a las pruebas unitarias clásicas. Luego siga las pruebas de integración, que se utilizan para pruebas de código con servidores y recursos externos. Una vez que se cubren las pruebas de software, se presenta el resumen Cx server
para una integración y entrega continuas.
application
contiene código fuente, pruebas unitarias y configuración para una aplicación web real.
application [firstapp-application]
/-- src
| /-- main
| | /-- java
| | | /-- com.sap.cloud.sdk.tutorial
| | | |-- HelloWorldServlet.java
| | /-- resources
| | | |-- application.properties
| | /-- webapp
| | /-- WEB-INF
| | |-- beans.xml
| | |-- web.xml
| /-- test
| /-- java
| /-- com.sap.cloud.sdk.tutorial
| |-- UnitTest.java
|-- pom.xml
src/main/java
– Aquí está su código de producción, nada más. Como puede ver, elHelloWorldServlet
, que veremos con más detalle pronto.src/main/resources
– Todo lo que desee entra en su código de producción, pero no en el código coleccionable aquí (por lo general, cosas como archivos de definición de API paraRAML
oOpenAPI
,Database Migration Files
porFlyway
oLiquibase
).src/main/webapp
– Contiene el informe de implementación de la aplicación web.web.xml
.src/test/java
– Contiene las pruebas unitarias de su aplicación. El propósito de las clases aquí es probar y validar aspectos individuales del flujo de datos y las operaciones de la computadora para un proyecto de aplicación.pom.xml
– Este es su archivo de administración de proyectos para Maven, donde puede mantener otras dependencias de código abierto o usar complementos que simplifiquen su entorno de compilación.
integration-tests
Contiene las pruebas de integración de su aplicación. Su estructura es similar application
.
integration-tests [firstapp-integration-tests]
/-- src
| /-- test
| /-- java
| | /-- com.sap.cloud.sdk.tutorial
| | |-- HelloWorldServletTest.java
| | |-- TestUtil.java
| /-- resources
| |-- arquillian.xml
|-- pom.xml
src/test/java
– Aquí puedes poner todas tus pruebas de integración. Como ves, ya existeHelloWorldServletTest
correspondiente a laHelloWorldServlet
.src/test/resources
– Aquí están todos los recursos necesarios para ejecutar o validar las pruebas de integración.
cx-server
el script y el archivo de configuración están ahí para administrar su mejor práctica de integración de software y entorno de entrega continua (Cx
). Los archivos incluidos permiten a los usuarios crear los suyos propios. Cx server
como parte de un Docker
despliegue. Jenkins
El servidor se está ejecutando. Este servidor automatizado ayuda a administrar todos los pasos técnicos de un proceso de desarrollo de software.
cx-server
|-- cx-server
|-- cx-server.bat
|-- server.cfg
cx-server
– SEOUnix
Un script de bash te permiteJenkins
servidor en su máquina local como parte deDocker
envase.cx-server.bat
– Este script por lotes es el resto delcx-server
guión hacerWindows
usuarios.server.cfg
– Este es el archivo de configuración para los parámetros del servidor.
Una vez que el servidor Jenkins esté configurado para sus necesidades personales, los archivos en el directorio raíz del proyecto serán útiles:
Jenkinsfile
– La definición de unJenkins Pipeline
y sigue siendo parte del código fuente de los proyectos. Define los pasos que se ejecutan específicamente para una aplicación..pipeline/config.yml
– Este es el archivo de configuración para una aplicación específica.manifest.yml
el informe de implementación paraCloud Foundry
. Este archivo se tratará con más detalle más adelante en este tutorial.
Pruebas unitarias y pruebas de integración
Esta separación de módulos de prueba hace posible ejecutar pruebas unitarias y pruebas de integración sin implementarlas, así como implementar la aplicación sin ejecutar pruebas que consuman mucho tiempo. Las pruebas unitarias se pueden realizar en público dentro del módulo de aplicación application/src/test
, o por separado unit-tests
un módulo que no forma parte del arquetipo. Para el caso, recomendamos encarecidamente los artículos y videos educativos de Martin Fowler. Para empezar recomendamos leer su publicación al respecto. Pruebas unitarias.
Durante el desarrollo, es importante probar el código aplicado a los servicios externos, es decir, la lógica que se ejecuta en un entorno distribuido. Aquí es donde las pruebas de integración son una herramienta importante para garantizar la precisión y la estabilidad en toda la implementación interna y externa. Dado que las pruebas de integración pueden contener información confidencial, como la lógica empresarial y las señales de acceso de prueba, puede resultar útil mantener su rendimiento dentro del submódulo dedicado de Maven. De esa manera, la aplicación accesible en sí puede iniciarse más tarde sin pruebas y sus dependencias.