我有一个多模块项目,想要创建一个包含所有模块类的jar.在我的父POM中,我声明了以下插件:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptorRefs>
<descriptorRef>bin</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)
但是,在运行mvn assembly:assembly时,只包含父文件夹中的源(空).如何将模块中的源包含到存档中?
在Java中我想编写方法测试(简化代码段):
public class MyClass {
private static final Set<Class> SOME_SET = new HashSet<Class>(Arrays.asList(Foo.class, Bar.class));
public boolean isValid(Class clazz){
return SOME_SET.contains(clazz);
}
}
Run Code Online (Sandbox Code Playgroud)
以下测试的问题
import static org.mockito.Mockito.when;
import org.mockito.Mockito;
public class MyClassTest {
@Test
public void isValid_Foo_returnsTrue(){
Foo foo = Mockito.mock(Foo.class);
MyClass target = new MyClass();
assertTrue(target.isValid(foo));
}
}
Run Code Online (Sandbox Code Playgroud)
就是在模拟类Foo上,foo.getClass()返回带有附加后缀的类名.像这样的东西:
Foo$$EnhancerByMockitoWithCGLIB$$45508b12
Run Code Online (Sandbox Code Playgroud)
由于这个原因,测试失败,因为SOME_SET.contains(clazz)返回false.
我无法在Foo上模拟getClass()方法:
Mockito.when(foo.getClass()).thenReturn(Foo.class);
Run Code Online (Sandbox Code Playgroud)
因为编译器抱怨: 方法thenReturn(Class <capture#1-of?extends Foo>)在类型OngoingStubbing <Class <capture#1-of?extends Foo >>不适用于参数(Class <Foo>)
问题是,如何实现模拟对象的getClass()方法在真实(非模拟)对象上返回与getClass()方法相同的值?
我的公司使用 SonarQube 已经有一段时间了,现在我们安装了最新的 SonarQube 版本 6.4,我们想升级我们正在使用的质量配置文件。
据我所知,不再需要使用 FindBugs、PMD 和 Checkstyle 插件,因为 SonarJava 插件中的规则包含其他插件中的所有规则。
我想使用“Sonar way”内置配置文件,但我注意到它只包含 SonarJava 存储库中所有规则的子集。Sonar 方式有 292 条规则,SonarJava 规则库中有 427 条规则。我注意到“声纳方式”中缺少一些重要规则。
问题是:
java ×2
archive ×1
junit ×1
maven ×1
maven-2 ×1
mocking ×1
mockito ×1
multi-module ×1
sonarqube ×1
unit-testing ×1