小编mac*_*mac的帖子

使用Mockito将Class <T>作为参数的方法存根

有一个通用的方法,将类作为参数,我有问题与Mockito存根.该方法如下所示:

public <U extends Enum<U> & Error, T extends ServiceResponse<U>> T validate(
    Object target, Validator validator, Class<T> responseClass,
    Class<U> errorEnum);
Run Code Online (Sandbox Code Playgroud)

这真是可怕,至少对我而言......我可以想象没有它的生活,但代码库的其余部分愉快地使用它......

在我的单元测试中,我打算将此方法存根以返回一个新的空对象.但是我如何用mockito做到这一点?我试过了:

when(serviceValidatorStub.validate(
    any(), 
    isA(UserCommentRequestValidator.class), 
    UserCommentResponse.class, 
    UserCommentError.class)
).thenReturn(new UserCommentResponse());
Run Code Online (Sandbox Code Playgroud)

但由于我正在混合和匹配匹配器和原始值,我得到"org.mockito.exceptions.misusing.InvalidUseOfMatchersException:无效使用参数匹配器!"

java generics class mocking mockito

44
推荐指数
1
解决办法
6万
查看次数

使用Integer.valueOf(String)查找"使用解析基元进行装箱/取消装箱"的Findbugs

我有这段代码:

public void someMethod(String id) {
   someOtherMethod(Integer.valueOf(id));
}

public void someOtherMethod(int id) {
   // do something with id
}
Run Code Online (Sandbox Code Playgroud)

在第二行,Findbugs抛出了这个异常:

用于解析基元的装箱/拆箱

当我只是调用Integer.valueOf()/我该如何解决这个问题时,为什么Findbugs抱怨这个?

java boxing unboxing findbugs

29
推荐指数
2
解决办法
2万
查看次数

显示Jenkins中单个测试结果的历史记录 - 附加插件或配置问题?

目前我们的Jenkins服务器只显示传递/跳过/失败测试总数的历史/图表 - 我假设这是开箱即用的行为.

If you select a single test, you'll get information for how long the test was failing (assuming it did fail).

However, we'd like to see is a history for that single test across the different builds to identify whether the test has been failing in the past (and when) even though it just passed. If you find a build where it failed, you could click on it, and investigate what might have caused the failure; if it …

testing plugins reporting jenkins jenkins-plugins

20
推荐指数
2
解决办法
3872
查看次数

如何通过curl触发构建时设置Jenkins构建描述?

我正在尝试设置我正在触发的构建的构建描述,因为我正在开始构建,到目前为止我没有运气.

我遇到了一个解决方案(将文本添加到由Jenkins远程API触发的构建页面中),我有点让它以这种方式工作(第一个命令将启动构建,第二个将设置最后一个的描述)建立):

curl -v -X POST "http://[myServer]/job/[jobName]/build"
curl -v -X POST "http://[myServer]/job/[jobName/lastBuild/submitDescription" --data-urlencode "description=test description"
Run Code Online (Sandbox Code Playgroud)

然而,问题是如果我刚刚开始的构建排队/不立即踢,"lastBuild"将不会引用我刚刚开始的构建,而是它之前的构建(仍在构建).

所以我尝试过这样的事情:

payload='json={""description"":""test description""}'
curl -v -X POST -H "Content-Type: application/json" -d $payload "http://[myServer]/job/[jobName]/build"
Run Code Online (Sandbox Code Playgroud)

但它实际上没有设置描述.

任何想法如何实现这一目标?

我找到的其他解决方案,但我并不满意:

curl jenkins jenkins-cli

8
推荐指数
1
解决办法
1万
查看次数

GitExtensions + Putty通过SSH自定义端口

我有一个git存储库,我使用类似于此的路径拉取:

git pull ssh://username@host.com:1234/path/to/repository.git
Run Code Online (Sandbox Code Playgroud)

当GitExtensions然后尝试使用plink从repo中提取时,它会进行以下调用:

plink -T username@host.com:/path/to/repository.git
Run Code Online (Sandbox Code Playgroud)

这最终失败了,因为它实际上正在ping端口#22,而不是#1234.

正确的召唤将是

plink -T -P 1234 username@host.com:/path/to/repository.git
Run Code Online (Sandbox Code Playgroud)

如果我在〜/ .ssh/config中创建一个别名"hostCom",它似乎正常工作(连接到#1234),如果我这样做:

plink -T username@hostCom
Run Code Online (Sandbox Code Playgroud)

但是,只要我添加git repo的路径,它就会再次进入#22.

我尝试的另一个选项是在putty中创建一个会话,让我们称之为"hostPutty",并在那里设置默认端口等.尽管底线最终是相同的:无法将路径与git repo与自定义端口组合.

如何组合所有部件以使其工作?

为什么OpenSSH可以解决这个问题,但Putty不能解决?OpenSSH的唯一问题是它在每次连接尝试时一直要求我输入私钥的密码(我不想在没有密码的情况下创建私钥).

git ssh putty git-extensions

6
推荐指数
1
解决办法
7380
查看次数

如何根据 java 系统属性有条件地添加 log4j2 appender?

我试图弄清楚如何根据是否提供/设置 java 系统属性将 appender 添加到记录器。

所以假设我有一个这样的基本配置:

<Logger name="myLogger" level="info" additivity="false">
  <AppenderRef ref="myAppender1" />
  <AppenderRef ref="myAppender2" />
</Logger>
Run Code Online (Sandbox Code Playgroud)

所以现在我想找出一种方法,如果我提供参数 -PaddAppender2,则有条件地只添加第二个 appender。像这样的东西:

<Logger name="myLogger" level="info" additivity="false">
  <AppenderRef ref="myAppender1" />
  <?if (${sys:enableAppender2:-false) == "true"}>
  <AppenderRef ref="myAppender2" />
  </?if> 
</Logger>
Run Code Online (Sandbox Code Playgroud)

我怎么做?

我知道我可以例如在给定的属性(“logLevel”)上使级别动态(如果未给出属性,则“信息”是默认值):

<Logger name="test" level="${sys:logLevel:-info}" additivity="false">
Run Code Online (Sandbox Code Playgroud)

我查看了过滤器文档,但我无法弄清楚。这当然是如果过滤器是正确的方法。

java log4j log4j2

6
推荐指数
3
解决办法
7813
查看次数

如何让Sonar导出测试统计数据?

我定义了以下Sonar Ant目标:

<target name='sonar'>
    <property name='sonar.sources' value='${src.dir}'/>
    <property name='sonar.tests' value='${test.src.dir}'/>
    <property name='sonar.binaries' value='build/classes'/>
    <path id='jars'>
        <fileset dir='${env.JAVA_HOME}/jre/lib' includes='*.jar'/>
        <fileset dir='build/lib/test' includes='*.jar'/>
    </path>
    <pathconvert property='sonar.libraries' refid='jars' pathsep=','/>

    <exec executable='p4' outputproperty='p4.P4CLIENT'>
        <arg value='set'/>
        <arg value='P4CLIENT'/>
    </exec>
    <propertyregex
            property='p4client'
            input='${p4.P4CLIENT}'
            regexp='P4CLIENT=([^ ]+) *.*'
            replace='\1'/>
    <propertyregex
            property='sonar.timestamp'
            input='${build.time}'
            regexp='_'
            replace='T'/>
    <sonar:sonar key='com.netflix:${module.name}' version='${p4client}@${sonar.timestamp}' xmlns:sonar='antlib:org.sonar.ant'/>

    <property name='sonar.dynamicAnalysis' value='reuseReports'/>
    <property name='sonar.emma.reportPath' value='${coverage.dir}'/>
</target>
Run Code Online (Sandbox Code Playgroud)

当我运行'ant sonar'并在我的浏览器中调出Sonar时,我会看到有关src目录中的类的信息,但是没有关于测试目录中的内容的信息.

如果我将$ {test.src.dir}添加到sonar.sources而不设置sonar.tests,我会看到有关测试类的一些信息,但Sonar仍会报告0测试成功.

我如何获得它以便我可以深入了解每种测试方法及其统计数据?

ant junit emma sonarqube

5
推荐指数
2
解决办法
5460
查看次数

如何在 RESTEasy 3.0 客户端框架(使用 ResteasyClientBuilder 和 ResteasyWebTarget)中设置 HTTP 标头?

我试图弄清楚如何设置类似于此处解释的 HTTP 标头:

但是,我想使用 RESTeasy 3.0 功能(ResteasyClientBuilder 和 ResteasyWebtarget)而不是已弃用的 ProxyFactory,如下所述:

只是为了澄清,我也不想在每个请求上设置标头/不想将它们传递给客户端,如果可能的话,我希望将它们设置在 ResteasyClientBuilder/ResteasyWebtarget 级别。

java jax-rs resteasy

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

是否可以并行运行多个 maven-exec-plugin 执行?

是否可以以某种方式并行运行多个 exec-maven-plugin 执行?

我们希望为 DAL 集成测试部署不同的数据库类型,虽然显然可以按顺序执行此操作,但这会浪费大量时间。

<build>
    <plugins>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <executions>
                <execution>
                    <id>first-dbtype-deployment</id>
                    <goals>
                        <goal>java</goal>
                    </goals>
                    <configuration>
                        <mainClass>com.example.DeployDBTypeOne</mainClass>
                    </configuration>
                </execution>
                <execution>
                    <id>second-dbtype-deployment</id>
                    <goals>
                        <goal>java</goal>
                    </goals>
                    <configuration>
                        <mainClass>com.example.DeployDBTypeTwo</mainClass>
                    </configuration>
                </execution>
            </executions>
        </plugin>
  </build>
Run Code Online (Sandbox Code Playgroud)

实际部署的相应配置当然更复杂,但我认为这与所涉及的特定问题无关。

maven-plugin maven exec-maven-plugin

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

Jenkins 参数化下游构建触发器插件 - 仅在某些分支上?

我有以下场景:Build A 正在构建多个分支(用于 github 存储库的 CI 构建),我希望它触发 Build B,但前提是分支 ==“master”。

我发现我可以在“构建后操作”>“在其他项目上触发参数化构建”下启用下游触发器。我选择了下游项目,并且仅在稳定时进行构建。到现在为止还挺好。

然后,我发现我可以执行“将矩阵执行限制为一个子集”并将其放入:

"${BRANCH}"=="master"
Run Code Online (Sandbox Code Playgroud)

但是,无论分支是主分支还是完全不同的分支,它仍然会构建下游项目 B(顺便说一句,它使用与项目 A 相同的分支构建下游项目)。

我在这里误解了什么吗?这不是过滤下游执行的方式吗?

如果根本没有,有没有其他方法可以只在分支为“master”时构建下游项目?

这是参数化触发器插件顺便说一句。

jenkins jenkins-plugins

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