小编Pav*_*mar的帖子

RxJava2过滤器列表<Object>

我正在尝试使用RxJava2过滤List,这样列表中的每个项目(对象)都应该通过验证检查,我得到的结果列表只包含通过该测试的项目.例如,如果我的Object具有以下结构,

class MyClassA {
    int value1;
    int value2;
}
Run Code Online (Sandbox Code Playgroud)

我想只获取value210 的项目列表.

我有一个API调用函数,它返回一个Observable of List,即Observable<List<MyClassA>>如下,

apiService.getListObservable()
    .subscribeOn(Schedulers.io)
    .observeOn(AndroidSchedulers.mainThread());
Run Code Online (Sandbox Code Playgroud)

我希望对输出进行过滤,所以我尝试.filter()在上面添加一个运算符,但它似乎需要一个Predicate<List<MyClassA>>而不仅仅是一个MyClassA我可以检查的对象,并且只允许其中的一个value2 == 10.

我对RxJava和RxJava2很新,看起来我在这里缺少一些基本的东西?

TIA

java rx-java rx-android rx-java2

7
推荐指数
1
解决办法
9726
查看次数

JaCoCo 未根据源文件生成覆盖率报告 - 方法名称不可点击

我有一个 Maven 多模块项目,其中 JaCoCo 没有根据源文件生成报告。

通常,如果MyService是正在测试的类,它将以两种方式报告,一种通过MyService.html基于适当包的位置中的文件名和方法列表,以数字和图表的形式提供覆盖范围的整体图 - 列出所有方法在类中,每个方法都有一个指向另一个 html 的可点击链接,MyService.java.html其中包含带有红色/绿色/黄色背景的源代码以显示覆盖状态。

在我的场景中,只MyService.html生成而不是MyService.java.html和 方法在前者中列出并包含覆盖详细信息,但没有指向其他报告的超链接,如下所示。

在此处输入图片说明

问题在这里变得更有趣,我的 Maven 配置未在此模块中配置,但在父模块和其他子模块中能够正确生成报告。下面是maven插件配置供参考。

父 POM:

<plugin>
  <groupId>org.jacoco</groupId>
  <artifactId>jacoco-maven-plugin</artifactId>
  <version>${jacoco.version}</version>
  <configuration>
     <destFile>${project.basedir}/target/jacoco-unit.exec</destFile>
     <dataFile>${project.basedir}/target/jacoco-unit.exec</dataFile>
     <append>true</append>
  </configuration>
  <executions>
     <execution>
        <id>jacoco-initialize</id>
        <goals>
           <goal>prepare-agent</goal>
        </goals>
     </execution>
     <execution>
        <id>jacoco-site</id>
        <phase>package</phase>
        <goals>
           <goal>report</goal>
        </goals>
     </execution>
  </executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)

子POM:

    <plugin>
        <groupId>org.jacoco</groupId>
        <artifactId>jacoco-maven-plugin</artifactId>
    </plugin>
Run Code Online (Sandbox Code Playgroud)

尝试切换 JaCoCo 版本,但没有任何帮助,现在坚持使用最新的 0.8.2。Maven 是最新的 - 3.6.0。除此之外,子 pom 中配置的另一个插件是 PMD——它的存在与否对报告没有任何影响。

类似问题:Gradle JaCoCo 插件 - 报告中不可点击的类和方法名称

java maven jacoco jacoco-maven-plugin

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

用于lambda表达式的Java堆转储分析

我的Java应用程序堆转储显示,我的类中使用的特定lambda已锁定了一定数量的内存,并且在GC期间未释放该内存。

堆将特定的匿名lambda类显示为ParentClass $$ Lambda $ ID,在当前情况下,该ID为79(附加图像)。这个ID似乎与该类中存在的lambda的数量没有任何关系,因此我们无法得出代表哪个lambda的结论。我有兴趣指出确切的lambda表达式,因为它有助于分析,修复和测试相关场景。

用DJ反编译类文件无济于事,因为它会将lambda表达式重新创建为可读代码。让我知道是否有任何想法。

在此处输入图片说明

java lambda profiling heap-dump java-8

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

在Windows上安装和使用Java协议缓冲区

在Windows环境中使用Java的Google Protobuf的文档不是很友好,分散,并且使新用户感到困惑。这是协助新探索者的一个小尝试。

java protocol-buffers

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

Jackson-使用整数字段序列化/反序列化枚举

这里有一个非常相似的问题-Jackson:将枚举值序列化和反序列化为整数,这涉及使用Jackson来枚举和反序列化枚举,其解决方案通过使用@JsonValue批注非常简单。

如果我们有一个带有如下整数字段的枚举,则此方法不起作用。

enum State{
    GOOD(1), BAD(-1), UGLY(0);

    int id;

    State(int id) {
        this.id = id;
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我们的要求是序列化并提供实际值而不是name()。说,就像{"name":"foo","state":1}代表foo表示良好。@JsonValue仅在序列化的情况下添加注释才有帮助,反序列化失败。如果我们没有字段,则意味着GOOD = 0,BAD = 1,UGLY = 2 @JsonValue就足够了,并且当字段存在时Jackson不能反序列化-0和1的映射错误,-1的异常。

java enums json jackson

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

安装后如何将电子安装位置添加到 PATH 变量

我正在使用电子构建器来打包我的电子应用程序。
我的应用程序有一个 CLI 模块,所以我需要的是:

- 完成安装应用程序后(使用allowToChangeInstallationDirectory: true),我需要将安装位置添加到 PATH 变量。

我找不到任何关于这个的东西,但这个问题添加电子应用程序路径安装后用户环境变量,它没有可行的答案

environment-variables node.js electron electron-builder

2
推荐指数
1
解决办法
2720
查看次数

JUnit 5 - 为整个测试套件提供设置和拆卸

我的要求是对一组测试进行一些初始化,并在所有测试完成后将其清除。这些测试围绕几个测试类进行,因为它们不是密切相关的,但需要一个共同的初始化。

我正在使用@SelectClasses来形成套件并尝试使用@ExtendWith应该处理预处理和后处理的自定义扩展。这不起作用,我不确定 JUnit 中是否存在合适的解决方案。共享已经尝试过的示例代码。

套房:

@SelectClasses({FirstTest.class, SecondTest.class})
@ExtendWith(SuiteExtension.class)
@RunWith(JUnitPlatform.class)
@SuiteDisplayName("test suite")
public class SuiteClass {
}
Run Code Online (Sandbox Code Playgroud)

延期:

public class SuiteExtension implements BeforeAllCallback, AfterAllCallback {

    @Override
    public void afterAll(ExtensionContext context) throws Exception {
        System.out.println("afterAll");
    }

    @Override
    public void beforeAll(ExtensionContext context) throws Exception {
        System.out.println("beforeAll");
    }
}
Run Code Online (Sandbox Code Playgroud)

测试类 1:

public class FirstTest {

    @Test
    void test1(){
        System.out.println("test1");
    }
}
Run Code Online (Sandbox Code Playgroud)

测试类 2:

public class SecondTest {

    @Test
    void test2(){
        System.out.println("test2");
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

test1
test2
Run Code Online (Sandbox Code Playgroud)

预期输出:

beforeAll
test1
test2 …
Run Code Online (Sandbox Code Playgroud)

java junit unit-testing junit5 junit5-extension-model

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