我的maven项目有一些问题。我在我的maven文件夹src/test/java中创建了一些JUnit测试。
如果我在命令行或Eclipse IDE中使用“mvn清理安装”创建了我的maven项目,并使用“清理”和“安装”等运行配置,所有测试都将正常运行,不会发生一些错误。
但是,如果我手动运行 JUnit 测试,其中一个 Junit 测试将失败。但是什么原因,为什么maven没有意识到这个事实呢?以下是我的maven pom.xml文件的代码片段:
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.0.2</version>
<configuration>
<optimize>true</optimize>
<fork>true</fork>
<source>${source.jdk}</source>
<target>${target.jdk}</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.16</version>
<configuration>
<testFailureIgnore>false</testFailureIgnore>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptorRefs>
<descriptorRef>
jar-with-dependencies
</descriptorRef>
</descriptorRefs>
<archive>
<addMavenDescriptor>false</addMavenDescriptor>
<manifestEntries>
<Source-JDK>${source.jdk}</Source-JDK>
<Target-JDK>${target.jdk}</Target-JDK>
<Project-Build-SourceEncoding>${project.build.sourceEncoding}</Project-Build-SourceEncoding>
<Maven-Build-Timestamp>${maven.build.timestamp}</Maven-Build-Timestamp>
</manifestEntries>
<manifest>
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
<addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>${project.groupId}.${project.artifactId}.MainClass</mainClass>
</manifest>
</archive>
<appendAssemblyId>false</appendAssemblyId>
<classifier>jar-with-dependencies</classifier>
</configuration>
<executions>
<execution>
<id>assembly-jar-Id</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
以下是失败的Junit代码:
public void testProperties(){
String build_time = Parameters.BUILD_TIME.getParameter();
Map<String, String> allProperties = MetaInformation.Properties();
for(Map.Entry<String, String> currentEntry : allProperties.entrySet()){
if(currentEntry.getKey().equals(build_time)){
String project_build_value = currentEntry.getValue();
Assert.assertEquals(true, build_time_value != null && build_time_value.equals(""));
}
}
}
属性文件包含以下值:
buildTime=${timestamp}
encoding=${project.build.sourceEncoding}
Junit测试(读取“构建时”值)失败。“时间戳”是一个值,它基于我的maven项目的pom.xml。它给了我以下属性:
<properties>
<timestamp>${maven.build.timestamp}</timestamp>
<maven.build.timestamp.format>dd.MM.yyyy HH:mm</maven.build.timestamp.format>
</properties>
${maven.build.timestamp}表示时间点,我的maven项目是使用命令mvn净安装构建的。读取此值的JUnit测试会带来一些麻烦,因为变量“project_build_value”在执行此JUnit测试期间为空。但是为什么以及如何解决这个问题呢?
最有可能的是,您的测试取决于另一个测试的执行,该测试会生成一些文件,其他资源或将数据存储在某个地方(例如在数据库或其他内容中)。TDD(测试驱动程序开发)指出,您编写的任何测试都应该是它们自己的独立实体,这意味着:您编写的任何测试都应该是完全自给自足的,而不是依赖于之前执行的其他测试所产生的东西。
简而言之:确保您的测试在其< code>setUp()方法中生成了所有适当的资源/数据,或者在您的测试执行之前Maven复制了所需的测试资源。
调试依赖于由其他测试用例产生的资源/数据的测试用例从来都不是一个好主意,因为,在某些时候,你会忘记另一个测试正在干扰你的资源,并且会想为什么结果不是你所期望的。
从很久以前的某个版本开始(大约是1.b.35版),Nutz 就偷偷的加入了 maven 的 pom.xml 文件, 极好的解决了测试时需要依赖其他 jar 包的问题,接下来就让我们使用 Maven 来进行 JUnit 测试吧。 Nutz 在 Github 的 地址为 https://github.com/nutzam/nutz(Git@OSC镜像 https://git.oschina.net/n
问题内容: 发生了最奇怪的事情,我的测试运行正常,但现在不再,我完全没有更改代码,这里是一个例外: 问题答案: 我看到您正在使用Eclipse,但您是否还在使用其他外部构建/测试工具,例如Ant或Maven?有时,在同时使用其他外部工具时,Eclipse可能会不同步。 如果使用外部工具,请执行清理生成的工件所需的所有操作(例如mvn clean)。然后刷新Eclipse项目并按照前面的建议进行干净
我有一个测试类,有几个测试,都通过了。如果我将该类添加到测试套件中,则所有测试都会失败。 原因是无法解决对JavaFX类型的依赖关系。我使用了一个初始化JavaFX框架(例如应用程序线程等)的测试规则,这似乎可以正常工作,正如通过的测试所表明的那样。由于异常,测试失败: 为什么JUnit的行为会因我运行测试的方式而异?我怎样才能解决这个问题?请注意,这并不是针对so的GUI测试(我不想模拟用户操作
在我的nodejs项目(用Typescript编写)中,我可以用以下命令运行我的测试: 他们成功了。我还在我的 package.json 文件中使用此命令,以便 以相同的方式运行它们,但在本例中,我得到: 这是我的包裹。json文件包含: 通过npm运行摩卡的正确变体是什么?
我已经使用Appium和Java以及TestNG为Android应用程序编写了一些测试。我的测试在模拟器上本地运行良好,但当我将它们上传到设备场时,我的测试总是失败。我已经尽可能地简化了我的测试,但它仍然不起作用。目前,我尝试运行的测试会在打开应用程序时出现的提示中找到并单击“允许权限”按钮。代码: 观看Device Farm提供的视频,我可以看到它打开并立即关闭我的应用程序。它甚至没有像应该的那
问题内容: 在运行JUnit测试时,我似乎总是会遇到此错误: 蚀outOfMemoryError:堆空间 我已经用JConsole监视了Eclipse,并且堆内存的峰值大约为150MB。我已将堆内存设置为1GB。 启动Eclipse时,我使用以下参数: 有谁知道是什么原因导致此问题?它仅在运行JUnit测试时发生。 问题答案: Junit测试在与Eclipse IDE不同的vm中运行。因此,内存不