簡體   English   中英

Maven:如何在第三個模塊中使用相同的測試來測試兩個模塊

[英]Maven: How to test two modules with the same tests in a third module

想象一個maven項目,每個模塊有3個模塊,一個接口模塊和兩個不同的接口實現。 我可以在自己的模塊中測試每個實現,但由於相同的接口,測試用例基本相同。

有沒有辦法在第四個maven模塊中收集測試用例並使用此模塊測試這兩個實現?

parent
|-interface
|-impl a
|-impl b
|-tests

因此,如果我構建impl a,maven知道從測試模塊運行測試以對抗構建。

謝謝。

關於Java:

如何在測試模塊中創建abstract測試,您將在其中編寫主要測試用例。 此測試將使用測試中第一個模塊中定義的接口。

然后,在每個模塊impl aimpl b ,創建一個擴展abstract測試並調用tests模塊中定義的測試方法的tests

關於Maven:

tests模塊中,您必須向Maven表明他必須創建一個測試包的jar

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>2.3</version>
            <executions>
                <execution>
                    <goals>
                        <goal>test-jar</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

然后,在每個實現模塊中,您必須指示您對此test-jar庫具有依賴性:

    <dependency>
        <groupId>foo</groupId>
        <artifactId>bar</artifactId>
        <version>${pom.version}</version>
        <type>test-jar</type>
        <scope>test</scope>
    </dependency>

是的,我們已經為類似的情況做了這個。 您只需在測試模塊中創建兩個pom,每個實現一個。 假設您有一個maven pom用於構建父模塊中的所有內容,現在它將包含類似的模塊

<module>../interface</module>
<module>../impl_a</module>
<module>../impl_b</module>
<module>../tests/impl_a</module>
<module>../tests/impl_b</module>

每個測試pom包含適當實現的依賴性。 所有依賴項當然都要用於測試。

現在,對於parent / pom.xml運行mvn將構建所有項目,並使用適當的依賴項運行相同的測試兩次。 然后測試項目將在每個impl_下創建一個目標目錄? 子目錄。

我沒有用maven模塊做這個,但是如果你實現一個抽象的測試用例ala 應該很簡單

public abstract class XyTester {

  protected abstract YourInterface createImpl();
}

junit必須讓抽象類不以“Test”結尾,所以我選擇Tester。

請參閱此處了解現實世界中抽象類,以及此處此處的一個實現。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM