In unserem Maven-Build verwenden wir das Standardprofil für Builds und ein anderes Profil für Tests. Wenn unsere Tests unter dem Standardprofil ausgeführt werden, brechen sie aus verschiedenen Gründen.In Maven - wie eine Meldung an den Benutzer angezeigt wird, wenn die Überprüfungsphase auf die Standardausführung ausgeführt wird?
zB gut in unserem Team mit unserer Build
mvn -Pfoo verify
schlecht in unserem Team mit unserer Build
mvn verify
Wir wollen die Menschen in unserem Team ermutigen, die Tests im Rahmen der 'foo' laufen Lebenszyklus, und warnen sie, wenn sie es nicht tun.
Mein aktueller Ansatz zur Lösung dieses Problems besteht darin, einen neuen todsicheren Test für das Standardprofil zu erstellen und alle Tests außer einem neuen DefaultProfileWarningTest
auszuschließen, dessen einziger Zweck es ist, dem Benutzer die Ausführung der Tests unter dem Profil foo
mitzuteilen.
So könnte der Test wie folgt aussehen:
public class DefaultProfileWarningTest {
@Test
public void displayWarning() {
System.out.println("The tests aren't running - you should have run **mvn -Pfoo verify**");
}
}
Mit einer Hinrichtung im pom.xml
ähnlich wie:
<profiles>
<profile>
<id>foo</id>
...
</profile>
<profile>
<id>my-default-profile</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19.1</version>
<configuration>
<includes>
<include>DefaultProfileWarningTest.java</include>
</includes>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<profiles>
Aber das scheint wie ein overwrought Flickschusterei. Angenommen, wir können das Profil-Ding nicht reparieren - gibt es eine einfache, leichtgewichtige Möglichkeit, dem Benutzer eine Nachricht anzuzeigen, wenn die Überprüfungsphase für das Standardprofil ist?
Meine Frage ist: In Maven - wie eine Meldung an den Benutzer anzuzeigen, wenn die Verify-Phase auf die Standardausführung ausgeführt wird?
Warum benötigen Sie eine Nachricht? Desweiteren nutzt du das maven-surefire-Plugin mit einem Profil ...Wenn diese Tests Integrationstests sind, sollten Sie besser maven-failsafe-plugin verwenden, was bedeutet, dass sie nur ausgeführt werden, wenn Sie 'mvn clean verfiy' machen, wenn Sie' mvn clean package' ausführen, werden sie nicht ausgeführt ... wenn Ihr Teammitglied Ich möchte eine 'mvn deploy' machen die Integrationstests werden ausgeführt ... – khmarbaise
Abgesehen davon, wenn diese Tests brechen, sollten Sie diese Tests reparieren, um sie laufen zu lassen, sonst macht das Ausführen dieser Tests keinen Sinn ... – khmarbaise
Danke @khmarbaise - Das war eine gute Aufforderung - ich habe diese Option untersucht. – hawkeye