我使用Eclipse,对于我的一些单元测试,我需要为测试设置一些JVM args,-Djava.library.path特别是.我在POM文件中设置如下:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<argLine>-Djava.library.path=target/dll</argLine>
</configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)
当我使用Maven构建时,它可以正常工作.但是,当我在Eclipse中运行时(即使安装了Maven插件 - 我的Eclipse环境中的其他所有内容都与maven一起正常工作),此JVM参数未应用.有谁知道这是为什么或如何解决这个问题?
我正在尝试将自定义安全策略文件传递给surefire以运行一些测试.(具体来说,我在java.lang中添加类来测试分析器,我希望在那里定义类的权限.)
我不确定我的问题是关于安全策略,还是我正在传递给确定的args.
按照Maven的文档在这里,我有这样的插件配置:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.18.1</version>
<configuration>
<argLine>-Djava.security.manager -Djava.security.policy==java.policy</argLine>
</configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)
我尝试过file://文件路径和其他变体.
注意在==对语法-Djava.security.policy==java.policy是正确的,根据此Oracle文档
如果你使用
java -Djava.security.manager -Djava.security.policy == someURL SomeApp(注意双等号)然后只使用指定的策略文件; 安全属性文件中指示的所有内容都将被忽略.
这是我的安全策略文件:
grant codeBase "file:${{java.ext.dirs}}/*" {
permission java.security.AllPermission;
};
grant {
permission java.lang.RuntimePermission "defineClassInPackage.java.lang";
permission java.security.AllPermission;
permission java.lang.reflect.ReflectPermission "suppressAccessChecks";
};
Run Code Online (Sandbox Code Playgroud)
如果我没有指定策略args,我会得到一个AccessControlError尝试在java.lang中定义一个类,如预期的那样.
如果我添加策略args,就好像我清除了所有授权策略,测试在访问文件时失败 - 我想它在尝试的第一个访问控制上失败了:
java.security.AccessControlException: access denied ("java.io.FilePermission" "/Users/me/myproj/target/surefire/surefire_03237249516701375492tmp" "read")
更新:我尝试使用没有maven/surefire的简单主类,但我仍然遇到此错误.我认为java.*可能会忽略安全策略,因为在SecureClassLoader中有一些代码:
if ((name != null) && name.startsWith("java.")) {
throw new SecurityException
("Prohibited package name: " +
name.substring(0, name.lastIndexOf('.')));
} …Run Code Online (Sandbox Code Playgroud) 我在哪里可以找到surefire生成的XML(TEST-.xml)文件的DTD或XML Schema?
我期待以下输出:
Running TestSuite
[DEBUG] beforeClass
[DEBUG] beforeTest
[DEBUG] test
[DEBUG] afterTest
[DEBUG] beforeTest
[DEBUG] test
[DEBUG] afterTest
[DEBUG] afterClass
Run Code Online (Sandbox Code Playgroud)
但相反,这实际上发生了.注意2个问题:BeforeClass 在 BeforeTest 之后运行.第二,Before/AfterTest运行一次.
Running TestSuite
[DEBUG] beforeTest
[DEBUG] beforeClass
[DEBUG] test
[DEBUG] test
[DEBUG] afterClass
[DEBUG] afterTest
Run Code Online (Sandbox Code Playgroud)
这是代码.
import org.testng.annotations.AfterClass;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;
public class TestNgAnnoTest {
@BeforeClass
public void beforeClass(){
System.out.println("beforeClass");
}
@BeforeTest
public void beforeTest(){
System.out.println("beforeTest");
}
@Test
public void test1(){
System.out.println("test");
}
@Test
public void test2(){
System.out.println("test");
}
@AfterTest …Run Code Online (Sandbox Code Playgroud) 我正在使用TestNG框架进行集成测试.我想使用TestNG生成JUnit样式的XML报告.我的项目不使用Ant,但我们使用Maven.您能告诉我JUnit样式XML的格式是什么样的,以及如何使用TestNG API生成JUnit XML文件.后来我想将这个JUnit XML文件与Hudson集成,我甚至想使用TestNG自定义这个JUnit XML报告.
那么我该如何完成上述任务呢?
在Maven项目中,我使用PowerMock-easymock来运行jUnit测试用例.但在做"mvn clean install"时,我的输出低于输出值.
运行TestSuite测试运行:2,失败:0,错误:0,跳过:0,已过去时间:0.621秒
结果:
测试运行:2,失败:0,错误:0,跳过:0
但我还有很多其他测试用例.这是pom.xml的一部分
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.8.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.easymock</groupId>
<artifactId>easymock</artifactId>
<version>3.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-easymock-release-full</artifactId>
<version>1.4.12</version>
<type>pom</type>
</dependency>
Run Code Online (Sandbox Code Playgroud)
如果我删除,PowerMock依赖并执行"mvn clean install",所有测试用例都运行正常.但我必须使用PowerMock.如何解决这个问题?
我们有一个包含一堆javascript文件的Jenkins作业.我们通过grunt构建我们的项目,在构建结束时,我们运行JSCover来运行我们的单元测试并收集代码覆盖率.一切正常.我们得到了一个很好的LCOV文件,我们在target/surefire-reports /目录中得到了一堆TEST - *.xml.
声纳显示代码覆盖率结果,但它不显示通过/失败甚至执行的测试数量.
我如何告诉声纳使用万无一失的报告?我想通过设置这个属性,它会消耗它,但没有爱:
sonar.surefire.reportsPath=target/surefire-reports
Run Code Online (Sandbox Code Playgroud)
这是我的项目属性文件:
# project metadata (required)
sonar.projectKey=pure.cloud.browser.app
sonar.projectName=Pure Cloud Browser App
sonar.projectVersion=1.0
# path to source directories (required)
sonar.sources=src
sonar.exclusions=js/lib/**,js/test/lib/**,js/test/tools/**
# The value of the property must be the key of the language.
sonar.language=js
# Advanced parameters
sonar.surefire.reportsPath=target/surefire-reports
sonar.javascript.lcov.reportPath=target/test-coverage/jscover.lcov
sonar.dynamicAnalysis=reuseReports
Run Code Online (Sandbox Code Playgroud)
谢谢你,Fabrice,在我之前的问题中建议我以下链接:https: //github.com/SonarSource/sonar-examples/tree/master/projects/languages/javascript/javascript-sonar-runner-JsTestDriver但我可以找不到方法告诉Sonar以某种方式显示存储在surefire-reports目录中的单元测试结果(测试次数,失败次数等).
有任何想法吗?
我正在使用maven-surefire-report-plugin来生成单元测试报告.这工作正常,但报告包含未显示图像的链接.如何让maven复制报告所需的图标?我应该用皮肤吗?我尝试了没有成功.这是maven-surefire-report-plugin定义:
<reporting>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-report-plugin</artifactId>
<version>2.16</version>
<configuration>
<showSuccess>true</showSuccess>
</configuration>
</plugin>
</plugins>
</reporting>
Run Code Online (Sandbox Code Playgroud)
我试图添加皮肤插件,但它不会影响报告:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-site-plugin</artifactId>
<dependencies>
<dependency>
<groupId>org.apache.maven.skins</groupId>
<artifactId>maven-application-skin</artifactId>
<version>1.0</version>
</dependency>
</dependencies>
</plugin>
Run Code Online (Sandbox Code Playgroud)
用图像呈现报告缺少什么?
我想在JUnit中为测试运行创建自定义html报告.我遇到的问题是在完成所有测试后释放资源并关闭标签.
我保持一个FileChannel打开以便写入报告.由于每个测试应该是带有行的表,并且有数百个,我不想为每个测试打开和关闭通道.这里出现的问题是测试组织 - 我有嵌套套件,所以testRunFinished不是一个选项(指单套件,不是所有测试,我看到了这个问题).TestWatcher也不会帮助我,因为它仅指单一测试.
使用的工具:maven 3.0.5,ff webdriver,junit 4.11.
我正在考虑两个选项:1)每次测试运行时打开和关闭通道2)覆盖finalize()使其关闭通道
他们似乎都不漂亮......我搜索了很多页面,但似乎没有人遇到过同样的问题.
任何更漂亮的解决方案?
我正在使用mockito 1.8.3,jacoco 0.72和maven 3.0.5 surefire插件(2.12.4)执行单元测试并生成覆盖报告,它工作正常.
随着越来越多的测试被添加,它开始不起作用.我在测试执行期间不断遇到内存不足错误,无法找出找出问题的方法.
我有大约1800多个测试用例,mockito作为模拟工具.如果我在测试阶段之前没有使用"org.jacoco:jacoco-maven-plugin:prepare-agent"在maven测试期间运行jacoco,那么它工作正常,但只要我添加jacoco代理,我就得到了PermGen的OOO问题.
我已经通过修改MAVEN_OPTS(由于surefire将分叉一个新进程不应该工作)和pom中的surefire argline参数将PermGen添加到2GB,但它没有多大帮助.
通过向surefire插件添加参数,我尝试在OOO发生时获取核心转储,但从未在任何文件夹中看到转储文件.我怀疑我的JVM设置不适用于surefire插件,但不确定是什么问题.有人可以帮我一个忙吗?谢谢.
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>${surefire.version}</version>
<inherited>true</inherited>
<configuration>
<properties>
<property>
<name>argLine</name> <value>-server -ea -XX:-UseSplitVerifier -XX:MaxPermSize=2g -Xmx3g -XX:+HeapDumpOnOutOfMemoryError </value>
</property>
<property>
<name>forkMode</name>
<value>once</value>
</property>
<property>
<name>reportFormat</name>
<value>plain</value>
</property>
<property>
<name>skipTests</name>
<value>${maven.test.skip}</value>
</property>
</properties>
</configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)