gpt4 book ai didi

gwt - 如何同时使用 maven 和 jUnit 测试?

转载 作者:行者123 更新时间:2023-12-04 13:55:02 25 4
gpt4 key购买 nike

我有一个在 Maven 中构建的 gwt 应用程序,现在我尝试运行一个简单的 GWT 测试,如下所示:

public class GwtTestLaughter extends GWTTestCase {

/**
* Specifies a module to use when running this test case. The returned
* module must include the source for this class.
*
* @see com.google.gwt.junit.client.GWTTestCase#getModuleName()
*/
@Override
public String getModuleName() {
return "com.sample.services.joker.laughter.Laughter";
}

/**
* Add as many tests as you like
*/
public void testSimple() {
assertTrue(true);
}
}

在 pom.xml 文件中,配置 gwt-maven-plugin 和 maven-surefire-plugin 如下:
  <plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>gwt-maven-plugin</artifactId>
<version>2.1.0-1</version>
<configuration>
<!-- Use the 'war' directory for GWT hosted mode -->
<output>${basedir}/war</output>
<webXml>${basedir}/war/WEB-INF/web.xml</webXml>
<runTarget>index.html</runTarget>
<!-- Make sure the GWT compiler uses Xerces -->
<extraJvmArgs>
-Dgwt.style=DETAILED -Xmx512M -Xss1024k -XX:MaxPermSize=128m -Djavax.xml.parsers.DocumentBuilderFactory=org.apache.xerces.jaxp.DocumentBuilderFactoryImpl -Djavax.xml.parsers.SAXParserFactory=org.apache.xerces.jaxp.SAXParserFactoryImpl -Dlogback.configurationFile=./src/test/resources/logback-test.xml
</extraJvmArgs>
</configuration>
<executions>
<execution>
<goals>
<goal>compile</goal>
<goal>test</goal>
</goals>
</execution>
</executions>


<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<useFile>false</useFile>
<forkMode>once</forkMode>
<argLine>-Xmx128m</argLine>
<systemPropertyVariable>
<property>
<name>log4j.configuration</name>
<value>log4j.properties</value>
</property>
</systemPropertyVariables>
</configuration>
<executions>
<execution>
<id>unit-test</id>
<phase>test</phase>
<goals>
<goal>test</goal>
</goals>
<configuration>
<skip>false</skip>
<includes>
<include>**/*Test.java</include>
<includes>
<excludes>
<exclude>**/GwtTest*.java</exclude>
</excludes>
</configuration>
</execution>
<execution>
<id>integration-test</id>
<phase>integration-test</phase>
<goals>
<goal>test</goal>
</goals>
<configuration>
<skip>true</skip>
<includes>
<include>**/GwtTest*.java</include>
<includes>
<excludes>
<exclude>**/*Test.java</exclude>
</excludes>
</configuration>
</execution>
<executions>
</plugin>

当我在命令行中运行“mvn test”时,我只能看到运行正常的 Junit 测试(带有 Test.java 文件名的测试),当我运行“mvn integration-test”时,我仍然看到所有测试,包括正常的 Junit运行测试和 Gwt 测试(具有 GwtTest.java 文件名的测试)。

问题一:

如何在集成测试期间完全排除运行正常的 Junit 测试?或者那是不可能的?因为在默认的maven生命周期中,测试阶段被定义为在集成测试之前存在,没有办法跳过测试阶段来运行纯集成测试吗?

由于我在/src/test/java 文件夹下混合了所有测试代码,所以当我运行“mvn integration-test”并在命令行窗口中观察输出时,我看到以下内容:
[INFO] running com.sample.services.joker.laughter.client.GwtTestLaughter 
..
[INFO] Validating newly compiled units
[INFO] [ERROR] Errors in 'file:...src/test/java/com/sample/joker/laughter/client/file1Test.java'..
[INFO] [ERROR] Line 42: No source code is available for type...; did you forget to inherit a required module?
...

问题二:

我不明白这一点,gwt 测试是一个非常简单的测试,为什么它会验证一个不相关的 *Test.java 并搜索它的源代码。虽然最终通过测试成功构建,但我怎样才能摆脱那些讨厌的错误消息?

也许我应该忘记 gwt-mavin-plugin 并坚持使用经典的 Juint 测试?

最佳答案

嗨,我了解您的问题,可能的解决方案位于此 gwt-maven-plugin 文档页面:https://gwt-maven-plugin.github.io/gwt-maven-plugin/user-guide/testing.html

根据插件文档:

按意图:
“测试”目标默认绑定(bind)到集成测试阶段,并且 GWTTestCase 不被视为单元测试,因为它们需要运行整个 GWT 模块。

要同时运行基于 Surefire 和 gwt-maven-plugin 的测试(使用 Surefire 进行常规服务器端 JUnit 测试,以及使用 GWT 进行客户端模型和 Controller 测试),您需要区分这些测试。这是使用命名约定完成的。

您可以使用一些命名模式配置 Surefire 插件(负责在 maven 构建期间运行测试)以跳过 GwtTests。

将经典测试和 GWT 测试分开的更简单方法是将 latests GwtTest"Something".java 命名为。由于 surefire 会查找默认命名为 Something"Test".java 的测试,因此它们将在测试阶段被忽略。

默认情况下,gwt-maven-plugin 使用 GwtTest*.java 作为包含模式,因此此类测试不会匹配标准的 Surefire 模式。使用此约定,您不必更改配置。

关于gwt - 如何同时使用 maven 和 jUnit 测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4549922/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com