2010-01-31 37 views
33

Soy nuevo en Java y estoy tratando de ejecutar una prueba de unidad en una clase que estoy escribiendo. Eclipse (3.5) creó la clase de prueba de unidad para mí y agregó Junit4 a mi ruta de clase.No se puede ejecutar el caso de prueba JUnit 4 en el proyecto de Android Eclipse

mi clase:

public class DistanceUtil 
{ 

public static double metersToMiles(double meters) 
{ 
    return 0; 
} 
public static double metersToKilometers(double meters) 
{ 
    return 0; 
} 

} 

Mi prueba de unidad:

public class DistanceUtilTest { 

@Test 
public final void testMetersToMiles() { 
    fail("Not yet implemented"); // TODO 
} 

@Test 
public final void testMetersToKilometers() { 
    fail("Not yet implemented"); // TODO 
} 

} 

Cuando hago clic derecho en la unidad de prueba y seleccione Ejecutar como prueba unitaria consigo el siguiente:

# 
# A fatal error has been detected by the Java Runtime Environment: 
# 
# Internal Error (classFileParser.cpp:3075), pid=5564, tid=4940 
# Error: ShouldNotReachHere() 
# 
# JRE version: 6.0_17-b04 
# Java VM: Java HotSpot(TM) Client VM (14.3-b01 mixed mode windows-x86) 
# An error report file with more information is saved as: 
# C:\Users\Giles Roadnight\workspaceAndroid\Cycloid\hs_err_pid5564.log 
# 
# If you would like to submit a bug report, please visit: 
# http://java.sun.com/webapps/bugreport/crash.jsp 
# 

¿Alguien tiene una idea de cómo puedo solucionar esto?

Gracias

Respuesta

53

Después de haber buscado en Google de una respuesta, esto parece que podría tener algo que ver con las herramientas de desarrollo de Android.

A continuación se presentan los pasos tomados de this comment hilo:

  1. clic derecho en el proyecto -> ejecutar -> configuración de ejecución
  2. Seleccione su proyecto Junit
  3. Ir a la pestaña ruta de clase
  4. eliminar la Android marco de entrada
  5. seleccionar entradas de arranque
  6. haga clic en avanzado
  7. seleccione Añadir biblioteca
  8. Ok
  9. eligió "Biblioteca Sistema JRE"
  10. Siguiente
  11. acabado
  12. Es necesario añadir también la biblioteca JUnit así que siga los pasos del 5 al 11 y seleccione la opción "Junit" en lugar de "JRE System Library"
  13. Ahora puede ejecutar su proyecto como Junit.
+1

¡Fantástico! ¡Respondió en 6 minutos! Muchas gracias – Roaders

+2

Como [señalado por Z] (http://independentlyemployed.co.uk/2010/11/17/working-out-why /), la razón por la que esto ocurre parece ser porque el proyecto se está ejecutando en la JVM con bytecode de Dalvik, por lo que el tiempo de ejecución se estrangula. – idbrii

1

Dado que las instrucciones de Alex de gatera ya no son válidas para Eclipse Juno y la última SDK de Android, puede ser útil para dar otra alternativa:

  1. Crear un proyecto de biblioteca de Java ordinaria separado que alberga todo el código que no tiene dependencias con la plataforma Android.
  2. Escriba JUnit pruebas normalmente.
  3. Incluya ese proyecto en su proyecto de Android como referencia de biblioteca.
  4. Utilice SLF4J u otra biblioteca de alto nivel para el registro.

Es un poco molesto en proyectos pequeños, pero OTOH ayuda a imponer modularidad y segregación de interfaz.

Cuestiones relacionadas