Pregunta

Estoy tratando de crear una integración y aceptación de la prueba con el AJUSTE.Aquí está la estructura de carpetas:

-src
--main
---fit
----"html files"
---java
----fit
-----"FIT Fixtures files"
----my
-----package
------"business logic files"

Aquí está mi pom.xml (maven2):

<project ...>
    <modelVersion>4.0.0</modelVersion>
    <groupId>test</groupId>
    <artifactId>Test</artifactId>
    <version>1.0-SNAPSHOT</version>
    <dependencies>
        ...
        <dependency>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>fit-maven-plugin</artifactId>
            <version>2.0-beta-3</version>
        </dependency>
    </dependencies>
    <build>
        <sourceDirectory>src/main/java</sourceDirectory>
        <plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>fit-maven-plugin</artifactId>
                <version>2.0-beta-3</version>
                <executions>
                    <execution>
                        <configuration>
                            <sourceDirectory>src/main/fit</sourceDirectory>
                            <sourceIncludes>*.html</sourceIncludes>
                            <outputDirectory>${project.basedir}\target</outputDirectory>
                        </configuration>
                        <goals>
                            <goal>run</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
    <repositories>
        ...
    </repositories>
</project>

Ejecución de la prueba de AJUSTE utilizando mvn integration-test -X, Me sale un error causado por:

java.lang.IllegalStateException:Accesorio falló con cuenta:0 derecho, erróneo 0, 0 ignorado, 4 excepciones

Aún así, el AJUSTE de salida en C:\JavaTest\target\customer-bills.html se genera y contiene un error que dice:java.lang.RuntimeException: The fixture GivenTheFollowingCustomers was not found.

"GivenTheFollowingCustomers" es el encabezado de la tabla en el HTML:

<table>
    <tr>
        <td colspan="3" class="title">GivenTheFollowingCustomers</td>
    </tr>
    ...
</table>

Yo pensaba que el sistema ha estado buscando el accesorio llamado GivenTheFollowingCustomers?Por qué no es capaz de encontrarlo?

Muchas gracias!

Actualización: Ahora el sistema es capaz de encontrar el fixture de la primera tabla, pero sólo el primero!Yo estaba frente al problema, ya que el encabezado de la tabla se GivenTheFollowingCustomers en lugar de fit.GivenTheFollowingCustomers.Aún así, estoy recibiendo el mismo error para todas las demás tablas/accesorios en que archivo HTML.Y es extraño porque no dependen de la tabla específica.Por ejemplo, si muevo la primera tabla (GivenTheFollowingCustomers) en la segunda posición, deja de funcionar y el primero comienza a trabajar en su lugar.Alguna idea..?

Update2: He intentado ejecutar las pruebas manualmente con el AJUSTE de la biblioteca (sin maven) y funciona bien!También, alguien escribió esto: http://osdir.com/ml/java.maven-plugins.mojo.user/2007-07/msg00000.html y no tenía respuestas.Posible error en el AJUSTE plugin de maven..?

¿Fue útil?

Solución

Es un error conocido con el complemento FIT maven.La solución debería haberse publicado en la versión 2.0-beta-4 pero nunca se publicó.De hecho, parece que el desarrollo se detuvo en diciembre de 2007 (¡ay!).De todos modos, es posible solucionar el problema creando la siguiente clase (como se ve en el parche):

/**
 * Extends ColumnFixture to allow a custom ClassLoader to be used for loading fixtures
 * 
 * @author Mauro Talevi
 */
public class ClassLoaderColumnFixture
    extends ColumnFixture
    implements FixtureClassLoaderEnabled
{

    private FixtureClassLoader classLoader;

    public ClassLoaderColumnFixture()
    {
        this( new FixtureClassLoader() );
    }

    public ClassLoaderColumnFixture()
    {
        this( new FixtureClassLoader() );
    }

    public ClassLoaderColumnFixture( FixtureClassLoader classLoader )
    {
        this.classLoader = classLoader;
    }

    public void enableClassLoader( FixtureClassLoader classLoader )
    {
        this.classLoader = classLoader;
    }

    public Fixture loadFixture( String fixtureName )
        throws InstantiationException, IllegalAccessException
    {
        return classLoader.newFixture( fixtureName );
    }
}

Y extendiéndose desde ClassLoaderColumnFixture en lugar de ColumnFixtures en los accesorios.

Esto resolvió mi problema, espero que pueda ser útil para alguien más.

Otros consejos

Hay un nuevo complemento de Maven que puedes usar.Simplemente reemplace el complemento con:

<plugin>
  <groupId>com.github.cradloff</groupId>
  <artifactId>fit-maven-plugin</artifactId>
  <version>3.0</version>
  <executions>
    <execution>
      <id>fixture</id>
      <phase>test</phase>
      <goals>
        <goal>run</goal>
      </goals>
    </execution>
  </executions>
</plugin>

Entonces no hay necesidad de un accesorio de cargador de clase especial.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top