2011-03-08 16 views
8

Tengo una pregunta sobre un proyecto de Android construido con Maven, Lo hicimos ejecutar nuestras pruebas de actividad, pero ahora lo necesitamos para ejecutar pruebas unitarias. La prueba unitaria está en el mismo proyecto que las pruebas de actividad, ¿cómo lo configuro en nuestros archivos pom.xml?Unidad de prueba de Android con Maven

Este es el archivo pom.xml Padres:

<?xml version="1.0" encoding="UTF-8"?> 
<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/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>andersen.project</groupId> 
    <artifactId>Hello-parent</artifactId> 
    <version>1.0</version> 
    <packaging>pom</packaging> 
    <name>Hello - Parent</name> 

    <modules> 
    <module>HelloWorld</module> 
    <module>HelloWorldTest</module> 
    </modules> 

    <dependencyManagement> 
    <dependencies> 
     <dependency> 
     <groupId>com.google.android</groupId> 
     <artifactId>android</artifactId> 
     <version>2.2.1</version> 
     <scope>provided</scope> 
     </dependency> 
     <dependency> 
     <groupId>com.google.android</groupId> 
     <artifactId>android-test</artifactId> 
     <version>2.2.1</version> 
     <scope>provided</scope> 
     </dependency> 
    </dependencies> 
    </dependencyManagement> 

    <build> 
    <sourceDirectory>src</sourceDirectory> 
    <testSourceDirectory>test</testSourceDirectory> 
    <pluginManagement> 
     <plugins> 
     <plugin> 
      <groupId>com.jayway.maven.plugins.android.generation2</groupId> 
      <artifactId>maven-android-plugin</artifactId> 
      <version>2.8.3</version> 
     </plugin> 
     <plugin> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>2.3.2</version> 
     </plugin> 
     </plugins> 
    </pluginManagement> 
    </build> 
</project> 

este es el pom.xml aplicación:

<?xml version="1.0" encoding="UTF-8"?> 
<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/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <parent> 
    <groupId>andersen.project</groupId> 
    <artifactId>Hello-parent</artifactId> 
    <version>1.0</version> 
    </parent> 

    <groupId>andersen.project</groupId> 
    <artifactId>helloworld</artifactId> 
    <version>1.0</version> 
    <packaging>apk</packaging> 
    <name>HelloWorld - Application</name> 

    <dependencies> 
    <dependency> 
     <groupId>com.google.android</groupId> 
     <artifactId>android</artifactId> 
    </dependency> 
    </dependencies> 
    <build> 
    <plugins> 
     <plugin> 
     <groupId>com.jayway.maven.plugins.android.generation2</groupId> 
     <artifactId>maven-android-plugin</artifactId> 
     <configuration> 
      <androidManifestFile>${project.basedir}/AndroidManifest.xml</androidManifestFile> 
      <assetsDirectory>${project.basedir}/assets</assetsDirectory> 
      <resourceDirectory>${project.basedir}/res</resourceDirectory> 
      <nativeLibrariesDirectory>${project.basedir}/src/main/native</nativeLibrariesDirectory> 
      <sdk> 
      <platform>4</platform> 
      </sdk> 
      <deleteConflictingFiles>true</deleteConflictingFiles> 
      <undeployBeforeDeploy>true</undeployBeforeDeploy> 
     </configuration> 
     <extensions>true</extensions> 
     </plugin> 
     <plugin> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <configuration> 
      <source>1.5</source> 
      <target>1.5</target> 
     </configuration> 
     </plugin> 
    </plugins> 
    </build> 
</project> 

y esta es la prueba de pom.xml

<?xml version="1.0" encoding="UTF-8"?> 
<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/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <parent> 
    <groupId>andersen.project</groupId> 
    <artifactId>Hello-parent</artifactId> 
    <version>1.0</version> 
    </parent> 

    <groupId>andersen.project</groupId> 
    <artifactId>helloworldtest</artifactId> 
    <version>1.0</version> 
    <packaging>apk</packaging> 
    <name>HalloWorld - Integration tests</name> 

    <dependencies> 
    <dependency> 
     <groupId>com.google.android</groupId> 
     <artifactId>android</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>com.google.android</groupId> 
     <artifactId>android-test</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>andersen.project</groupId> 
     <artifactId>helloworld</artifactId> 
     <type>apk</type> 
     <version>1.0</version> 
    </dependency> 
    <dependency> 
     <groupId>andersen.project</groupId> 
     <artifactId>helloworld</artifactId> 
     <type>jar</type> 
     <version>1.0</version> 
    </dependency> 
    </dependencies> 
    <build> 
    <plugins> 
     <plugin> 
     <groupId>com.jayway.maven.plugins.android.generation2</groupId> 
     <artifactId>maven-android-plugin</artifactId> 
     <configuration> 
      <androidManifestFile>${project.basedir}/AndroidManifest.xml</androidManifestFile> 
      <assetsDirectory>${project.basedir}/assets</assetsDirectory> 
      <resourceDirectory>${project.basedir}/res</resourceDirectory> 
      <nativeLibrariesDirectory>${project.basedir}/src/main/native</nativeLibrariesDirectory> 
      <sdk> 
      <platform>4</platform> 
      </sdk> 
      <deleteConflictingFiles>true</deleteConflictingFiles> 
      <undeployBeforeDeploy>true</undeployBeforeDeploy> 
     </configuration> 
     <extensions>true</extensions> 
     </plugin> 
     <plugin> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <configuration> 
      <source>1.5</source> 
      <target>1.5</target> 
     </configuration> 
     </plugin> 
    </plugins> 
    </build> 
</project> 

¿Debo agregar el siguiente texto en el pom.xml principal ?:

<dependency> 
    <groupId>junit</groupId> 
    <artifactId>junit</artifactId> 
    <version>4.8.1</version> 
    <scope>test</scope> 
</dependency> 

¿Agregar a otras poms?

cuando corro experta en la salida es:

Junit.framework no existe

+0

Por supuesto, si usted está utilizando JUnit tiene que agregar la dependencia. – khmarbaise

+0

Sí, pero aún falla. Junit.framework no existe. – Casper

Respuesta

0

Añadir la Surefire plugin a la pom.xml prueba. Surefire ejecuta las pruebas unitarias.

+0

He agregado la dependencia al archivo padre pom.xml y al archivo pom.xml de prueba. Pero todavía falla: junit.framework no existe – Casper

+0

@Casper: No olvide agregar pruebas de unidad al módulo: http://maven.apache.org/plugins/maven-surefire-plugin/examples/junit.html –

+0

Por favor, publique el mensaje de error completo. ¿Quién dice eso? ¿Seguro? ¿El compilador de Java? –

7

Me enfrenté al mismo problema. Fue causado por una mala configuración en el pom padre. Debe eliminar la etiqueta de ámbito en la sección de gestión de dependencia.

De esta manera:

<dependencyManagement> 
    <dependencies> 
    <dependency> 
     <groupId>com.google.android</groupId> 
     <artifactId>android</artifactId> 
     <version>2.2.1</version> 
    </dependency> 
    <dependency> 
     <groupId>com.google.android</groupId> 
     <artifactId>android-test</artifactId> 
     <version>2.2.1</version> 
    </dependency> 
    </dependencies> 
</dependencyManagement> 
+1

¡Existe un alcance TEST para maven también! http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Dependency_Scope. –