标签: surefire

Maven Eclipse单元测试配置

我使用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参数未应用.有谁知道这是为什么或如何解决这个问题?

maven-2 m2eclipse maven-plugin surefire

5
推荐指数
1
解决办法
5681
查看次数

将自定义Java安全策略文件传递给surefire maven测试失败,导致所有内容的访问控制错误

我正在尝试将自定义安全策略文件传递给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)

java security surefire maven

5
推荐指数
0
解决办法
761
查看次数

4
推荐指数
2
解决办法
3950
查看次数

Maven + Surefire + Testng的顺序 - BeforeClass,BeforeTest,Test,Test,AfterTest,AfterClass

我期待以下输出:

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 surefire maven

4
推荐指数
1
解决办法
2874
查看次数

如何使用TestNG生成JUnit样式的XML报告?

我正在使用TestNG框架进行集成测试.我想使用TestNG生成JUnit样式的XML报告.我的项目不使用Ant,但我们使用Maven.您能告诉我JUnit样式XML的格式是什么样的,以及如何使用TestNG API生成JUnit XML文件.后来我想将这个JUnit XML文件与Hudson集成,我甚至想使用TestNG自定义这个JUnit XML报告.

那么我该如何完成上述任务呢?

testing junit hudson surefire hudson-plugins

4
推荐指数
1
解决办法
6495
查看次数

使用带有easymock,Surefire的PowerMock,所有jUnit测试用例都没有针对Maven项目运行

在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.如何解决这个问题?

junit easymock powermock surefire maven

4
推荐指数
1
解决办法
5182
查看次数

如何告诉Sonar使用我的万无一失的报告来获取单元测试结果

我们有一个包含一堆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目录中的单元测试结果(测试次数,失败次数等).

有任何想法吗?

javascript surefire sonarqube

4
推荐指数
1
解决办法
8858
查看次数

如何获取生成的maven-surefire-report-plugin的图标

我正在使用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)

用图像呈现报告缺少什么?

report surefire maven

4
推荐指数
1
解决办法
4593
查看次数

在JUnit中运行所有测试后调用方法

我想在JUnit中为测试运行创建自定义html报告.我遇到的问题是在完成所有测试后释放资源并关闭标签.

我保持一个FileChannel打开以便写入报告.由于每个测试应该是带有行的表,并且有数百个,我不想为每个测试打开和关闭通道.这里出现的问题是测试组织 - 我有嵌套套件,所以testRunFinished不是一个选项(指单套件,不是所有测试,我看到了这个问题).TestWatcher也不会帮助我,因为它仅指单一测试.

使用的工具:maven 3.0.5,ff webdriver,junit 4.11.

我正在考虑两个选项:1)每次测试运行时打开和关闭通道2)覆盖finalize()使其关闭通道

他们似乎都不漂亮......我搜索了很多页面,但似乎没有人遇到过同样的问题.

任何更漂亮的解决方案?

java testing junit surefire maven

4
推荐指数
1
解决办法
6861
查看次数

Mockito,jacoco和surefire导致内存不足

我正在使用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)

mockito surefire maven jacoco

4
推荐指数
1
解决办法
2532
查看次数