我正在开发项目,我需要在运行每个JUnit测试之前执行一些操作.使用RunListener可以添加到JUnit核心的问题解决了这个问题.项目程序集是使用Maven完成的,所以我在我的pom文件中有这些行:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.12</version>
<configuration>
<properties>
<property>
<name>listener</name>
<value>cc.redberry.core.GlobalRunListener</value>
</property>
</properties>
</configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)
所以,一切都有效:
mvn clean test
Run Code Online (Sandbox Code Playgroud)
但是当使用IntelliJ(使用其内部测试运行器)开始测试时,我们编写的操作RunListener不会被执行,因此无法使用IntelliJ基础结构执行测试.
正如我所看到的,IntelliJ没有从pom文件解析这个配置,所以有没有办法明确告诉IntelliJ添加RunListener到JUnit核心?可能在配置中使用了一些VM选项?
使用漂亮的IntelliJ测试环境而不是读取maven输出要方便得多.
PS我需要执行的操作基本上是静态环境的重置(我的类中的一些静态字段).
我在Java中使用泛型和接口继承有问题.这是一个例子:
public interface Type0 { }
public interface Type1 extends Type0 {
void method();
}
public interface SomeInterface0<T extends Type0> {
T get();
}
public interface SomeInterface1<T extends Type1> extends SomeInterface0<T> { }
Run Code Online (Sandbox Code Playgroud)
现在,当我尝试使用SomeInterface1没有类型参数的类型的字段时,java comiler将SomeInterface1.get()方法结果的类型视为Type0.并且无法编译这样的东西:
...
SomeInterface1 si1;
...
si1.get().method();
Run Code Online (Sandbox Code Playgroud)
那么,为什么SomeInterface1<T extends Type1>有一个默认的vlue T= Type0?
我正在尝试使用使用静态/预设字典gzip的 DEFLATE 算法编码的数据创建有效的 gzip 文件(可以使用标准 linux 解压缩) 。
我已经阅读了DEFLATE和gzip的规范,看起来这是不可能的。正如我从 DEFLATE 规范中得到的,压缩数据块有两种编码类型:
FDICT标志设置为 的标头开头0。FDICT = 1但我发现没有办法实际将这样的字典写入文件。是否可以在我的字典中添加一些标头,或者以其他方式使 gzip 解压缩用 编码的数据FDICT = 1?
PS 我正在尝试使用 Java 的Deflate类来完成它,但对以这种方式压缩的块的实际 gzip 支持感兴趣。