有一个通用的方法,将类作为参数,我有问题与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:无效使用参数匹配器!"
我有这段代码:
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抱怨这个?
目前我们的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 …
我正在尝试设置我正在触发的构建的构建描述,因为我正在开始构建,到目前为止我没有运气.
我遇到了一个解决方案(将文本添加到由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)
但它实际上没有设置描述.
任何想法如何实现这一目标?
我找到的其他解决方案,但我并不满意:
我有一个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的唯一问题是它在每次连接尝试时一直要求我输入私钥的密码(我不想在没有密码的情况下创建私钥).
我试图弄清楚如何根据是否提供/设置 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)
我定义了以下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测试成功.
我如何获得它以便我可以深入了解每种测试方法及其统计数据?
我试图弄清楚如何设置类似于此处解释的 HTTP 标头:
但是,我想使用 RESTeasy 3.0 功能(ResteasyClientBuilder 和 ResteasyWebtarget)而不是已弃用的 ProxyFactory,如下所述:
只是为了澄清,我也不想在每个请求上设置标头/不想将它们传递给客户端,如果可能的话,我希望将它们设置在 ResteasyClientBuilder/ResteasyWebtarget 级别。
是否可以以某种方式并行运行多个 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)
实际部署的相应配置当然更复杂,但我认为这与所涉及的特定问题无关。
我有以下场景:Build A 正在构建多个分支(用于 github 存储库的 CI 构建),我希望它触发 Build B,但前提是分支 ==“master”。
我发现我可以在“构建后操作”>“在其他项目上触发参数化构建”下启用下游触发器。我选择了下游项目,并且仅在稳定时进行构建。到现在为止还挺好。
然后,我发现我可以执行“将矩阵执行限制为一个子集”并将其放入:
"${BRANCH}"=="master"
Run Code Online (Sandbox Code Playgroud)
但是,无论分支是主分支还是完全不同的分支,它仍然会构建下游项目 B(顺便说一句,它使用与项目 A 相同的分支构建下游项目)。
我在这里误解了什么吗?这不是过滤下游执行的方式吗?
如果根本没有,有没有其他方法可以只在分支为“master”时构建下游项目?
这是参数化触发器插件顺便说一句。