سؤال

أحاول إنشاء اختبار التكامل/القبول باستخدام FIT.هنا هو هيكل المجلد:

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

هذا هو ملف 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>

تشغيل اختبار FIT باستخدام mvn integration-test -X, ، أحصل على خطأ بسبب:

java.lang.IllegalStateException:فشلت المباراة مع التهم:0 صحيح، 0 خطأ، 0 تجاهل، 4 استثناءات

ومع ذلك، فإن إخراج FIT موجود C:\JavaTest\target\customer-bills.html تم إنشاؤه ويحتوي على خطأ يقول:java.lang.RuntimeException: The fixture GivenTheFollowingCustomers was not found.

"GivenTheFollowingCustomers" هو رأس الجدول في HTML:

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

اعتقدت أن النظام كان يبحث عن المباراة التي تسمى GivenTheFollowingCustomers؟لماذا لا يستطيع العثور عليه؟

شكراً جزيلاً!

تحديث:أصبح النظام الآن قادرًا على العثور على الجدول الأول، ولكن الأول فقط!كنت أواجه المشكلة لأن رأس الجدول كان GivenTheFollowingCustomers بدلاً من fit.GivenTheFollowingCustomers.ومع ذلك، أتلقى نفس الخطأ بالنسبة لجميع الجداول/التركيبات الأخرى في ملف HTML هذا.وهو أمر غريب لأنه لا يعتمد على جدول محدد.على سبيل المثال، إذا قمت بنقل الجدول الأول (GivenTheFollowingCustomers) في المركز الثاني، يتوقف عن العمل ويبدأ الأول في العمل بدلاً منه.أي فكرة..؟

التحديث2: لقد حاولت إجراء الاختبارات يدويًا باستخدام مكتبة FIT (بدون أداة maven) وهي تعمل بشكل جيد!وأيضا شخص آخر كتب هذا: http://osdir.com/ml/java.maven-plugins.mojo.user/2007-07/msg00000.html ولم يكن لديه إجابات.خطأ محتمل في البرنامج المساعد FIT maven ..؟

هل كانت مفيدة؟

المحلول

إنها علة معروفة مع البرنامج المساعد FIT maven.كان من المفترض أن يتم إصدار الإصلاح في الإصدار 2.0-beta-4 ولكن لم يتم إصداره مطلقًا.في الواقع، يبدو أن التطوير توقف في ديسمبر 2007 (أوه!).على أية حال، من الممكن حل المشكلة عن طريق إنشاء الفئة التالية (كما هو موضح في التصحيح):

/**
 * 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 );
    }
}

ويمتد من ClassLoaderColumnFixture بدلاً من ColumnFixtures في التركيبات.

هذا حل مشكلتي، وآمل أن يكون مفيدا لشخص آخر.

نصائح أخرى

هناك مكون إضافي مخضرم جديد مناسب يمكنك استخدامه.فقط استبدل البرنامج المساعد بـ:

<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>

ثم ليست هناك حاجة إلى تركيبات محمل فئة خاصة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top