我需要计算执行期间给定代码行被命中的次数。我想通过 IDE 上的调试工具来使用它,而不是代码或性能工具解决方案。
我已经在使用 YourKit 来分析该项目,并且不希望通过此工具进行大量线路调用。
我也不想使用代码(使用 System.out.print 和变量)来计算点击次数,因为我将检查不同分支的过程。
我已经检查了 IntelliJ IDEA 帮助。
但他们都没有回复我正在寻找的内容。
我目前正在使用 IntelliJ 的断点选项:Log to console。
我在 IntelliJ 中使用断点选项的方式是,每次遇到断点时都会收到一条日志消息,然后我必须计算消息数。
如果有人知道通过 IntelliJ 实现这一目标的简单直接解决方案,我真的很感激。提前致谢。
搜索插件以避免样板代码来实现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 或 …
我已将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版本。
我正在将测试从 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 导入相同的版本依赖项,但我仍然看到相同的错误。 …