小编Lag*_*guh的帖子

如何在调试期间使用 IntelliJ 计算断点命中数

我需要计算执行期间给定代码行被命中的次数。我想通过 IDE 上的调试工具来使用它,而不是代码或性能工具解决方案。

我已经在使用 YourKit 来分析该项目,并且不希望通过此工具进行大量线路调用。

我也不想使用代码(使用 System.out.print 和变量)来计算点击次数,因为我将检查不同分支的过程。

我已经检查了 IntelliJ IDEA 帮助。

还检查了这两篇文章: 调试和计数断点命中 计数断点命中

但他们都没有回复我正在寻找的内容。

我目前正在使用 IntelliJ 的断点选项:Log to console

此代码片段只是一个示例,而不是我将使用它的实际代码

我在 IntelliJ 中使用断点选项的方式是,每次遇到断点时都会收到一条日志消息,然后我必须计算消息数。

在此输入图像描述 我想获得实际的点击数,这样我就不必计算消息数。

如果有人知道通过 IntelliJ 实现这一目标的简单直接解决方案,我真的很感激。提前致谢。

java debugging performance intellij-idea

9
推荐指数
2
解决办法
4349
查看次数

使用 Lombok 为具有必需和可选属性的类创建构建器

搜索插件以避免样板代码来实现Joshua Bloch构建器模式,我发现了令人惊叹的Lombok 项目,它使您能够通过这样的注释生成构建器:

@Builder
public class Person {
    private String name;
    private String address;
    private String secondAddress;
}

PersonBuilder.builder().name("yourName").address("your Address").build();
Run Code Online (Sandbox Code Playgroud)

如您所见,没有样板代码,您可以Person通过调用提供的静态builder()方法轻松创建一个实例,链接 setter-like-calls 就像它与 JavaBeans-Pattern 一起工作一样,并以调用结束链build()

与构建器模式相比,JavaBeans-Pattern 的缺点之一是(来自Effective Java):

由于构造被拆分为多个调用,因此JavaBean 在其构造过程中可能处于不一致的状态

假设在上面的示例中,前两个属性 name 和 address 是构造 Person 实例所必需的,Lombok 实现构建器模式的方式使开发人员能够拆分/缩短构造并使用可能不一致的实例执行某些操作Person, 像这样:

Person p = PersonBuilder.builder().name("yourName").build();
...
System.out.println(p.getAddress());
...
p.setAddress("your address");
Run Code Online (Sandbox Code Playgroud)

Joshua Bloch的解决方案更喜欢使用强制属性作为参数的构建器方法,这样就不可能将构造拆分到多个调用中,如第 2 条:当面对许多构造函数参数时考虑构建器

我的问题是: 是否有任何方便的方法,例如 @Builder 的注释参数或属性级别上的 Springs @Required 或 …

java builder lombok

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

IntelliJ无法识别Lombok @Builder

我已将IntelliJ IDEA更新到版本2018.2.7,并且@Builder不再识别Lombok的注释。该项目已经具有Lombok批注,可以与IntelliJ的先前版本(2017 ...)一起很好地工作。只有@Builder失败了。我正在使用Lombok 1.14.4版本。和Java 11。

问题类似于此问题: Lombok无法与Intellij一起使用, 但是那里提供的解决方案不适用于我的项目,因为我的项目没有子模块,唯一pom.xml的解决方案是引用正确的项目。

该项目已启用Lombok插件和注释处理。

龙目岛插件配置 注释处理配置

配置版本的项目的POM:

<properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <lombok.version>1.14.4</lombok.version>
        <hibernate-jpa-2.1-api.version>1.0.0.Final</hibernate-jpa-2.1-api.version>
        <assertj-core.version>3.8.0</assertj-core.version>
</properties>
Run Code Online (Sandbox Code Playgroud)

代码级别的错误消息为:Cannot resolve symbol@Builder。如果可能的话,我想保留Lombok和IntelliJ版本。

错误信息

java intellij-idea intellij-plugin lombok

4
推荐指数
2
解决办法
924
查看次数

Mockito.extension 未找到 JUnit 5 throw 方法

我正在将测试从 JUnit 4 更新到 JUnit 5 (Jupiter)。

在普通的注释改编中,例如@BeforeEach我用来@ExtendWith(MockitoExtension.class)运行 @mocks 的注释。

代码是这样的:

    import org.junit.jupiter.api.BeforeEach;
    import org.junit.jupiter.api.Test;
    import org.junit.jupiter.api.extension.ExtendWith;
    import org.mockito.Mock;
    import org.mockito.junit.jupiter.MockitoExtension;

    @ExtendWith(MockitoExtension.class)
    public class SomeTest {

        private static final String TEST = "test";

        @Mock
        RetailerService retailerService;
        private Delivery delivery;

        @BeforeEach
        public void setUp() {
            when(retailerService.getMessage(any(String.class))).thenReturn(TEST);
            delivery = new Delivery(retailerService);
        }

        @Test
        public void should_have_delivery() {
            assertEquals(getExpectedDeliveriesDTOs(), delivery.toDtos());
        }

    }
Run Code Online (Sandbox Code Playgroud)

但是,当我运行测试时,我收到以下错误:

java.lang.NoSuchMethodError: org.mockito.session.MockitoSessionBuilder.initMocks([Ljava/lang/Object;)Lorg/mockito/session/MockitoSessionBuilder;

我在这个评论中看到:/sf/answers/3475908411/,这个错误可能是由于junit-jupiter-api项目 POM 中的 as 依赖项和mockito-junit-jupiter.

因此,我保证为 Jupiter 导入相同的版本依赖项,但我仍然看到相同的错误。 …

java junit intellij-idea mockito junit5

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