我有一个项目,我正在尝试单元测试。
测试运行良好。为简洁起见,以下代码是虚拟测试:
enum class QueryFilterOperator(val operator: String) {
EQUAL("="),
GREATER_THAN(">"),
LOWER_THAN("<"),
GREATER_THAN_OR_EQUAL(">="),
LOWER_THAN_OR_EQUAL("<=");
}
class QueryFilterOperatorTest : StringSpec({
"a query filter operator" {
assertEquals("=", EQUAL.operator)
}
})
但是当尝试使用IntelliJ工具调试它时,在一些kapt生成的代码上编译失败:
package com.wizy.data.contracts;
import java.lang.System;
@kotlin.Metadata(mv = {1, 1, 16}, bv = {1, 0, 3}, k = 1, d1 = {"\u0000\u0012\n\u0002\u0018\u0002\n\u0002\u0010\u0010\n\u0000\n\u0002\u0010\u000e\n\u0002\b\t\b\u0086\u0001\u0018\u00002\b\u0012\u0004\u0012\u00020\u00000\u0001B\u000f\b\u0002\u0012\u0006\u0010\u0002\u001a\u00020\u0003\u00a2\u0006\u0002\u0010\u0004R\u0011\u0010\u0002\u001a\u00020\u0003\u00a2\u0006\b\n\u0000\u001a\u0004\b\u0005\u0010\u0006j\u0002\b\u0007j\u0002\b\bj\u0002\b\tj\u0002\b\nj\u0002\b\u000b\u00a8\u0006\f"}, d2 = {"Lcom/wizy/data/contracts/QueryFilterOperator;", "", "operator", "", "(Ljava/lang/String;ILjava/lang/String;)V", "getOperator", "()Ljava/lang/String;", "EQUAL", "GREATER_THAN", "LOWER_THAN", "GREATER_THAN_OR_EQUAL", "LOWER_THAN_OR_EQUAL", "data-contracts"})
public enum QueryFilterOperator {
/*public static final*/ EQUAL /* = new EQUAL(null) */,
/*public static final*/ GREATER_THAN /* = new GREATER_THAN(null) */,
/*public static final*/ LOWER_THAN /* = new LOWER_THAN(null) */,
/*public static final*/ GREATER_THAN_OR_EQUAL /* = new GREATER_THAN_OR_EQUAL(null) */,
/*public static final*/ LOWER_THAN_OR_EQUAL /* = new LOWER_THAN_OR_EQUAL(null) */;
@org.jetbrains.annotations.NotNull()
private final java.lang.String operator = null;
@org.jetbrains.annotations.NotNull()
public final java.lang.String getOperator() {
return null;
}
QueryFilterOperator(java.lang.String operator) {
}
}
在此代码中,我们可以看到枚举构造函数设置不正确。
如果我删除构造函数并重试(使用公认的更简单的测试),我可以按预期进行调试。
enum class QueryFilterOperator {
EQUAL,
GREATER_THAN,
LOWER_THAN,
GREATER_THAN_OR_EQUAL,
LOWER_THAN_OR_EQUAL;
}
class QueryFilterOperatorTest : StringSpec({
"a query filter operator" {
assertNotEquals(EQUAL, GREATER_THAN)
}
})
为什么kapt会这样表现?为什么它只在调试时抱怨?为什么它甚至会生成这个明显不正确的java代码?
以下是POM中的kapt配置:
<plugin>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-maven-plugin</artifactId>
<version>1.3.61</version>
<executions>
<execution>
<id>kapt</id>
<goals>
<goal>kapt</goal>
</goals>
<configuration>
<sourceDirs>
<sourceDir>src/main/java</sourceDir>
</sourceDirs>
<annotationProcessorPaths/>
</configuration>
</execution>
<execution>
<id>compile</id>
<phase>process-sources</phase>
<goals>
<goal>compile</goal>
</goals>
<configuration>
<sourceDirs>
<source>${basedir}/src/main/java</source>
<source>${basedir}/target/generated-sources/annotations</source>
</sourceDirs>
</configuration>
</execution>
<execution>
<id>test-compile</id>
<phase>test-compile</phase>
<goals>
<goal>test-compile</goal>
</goals>
</execution>
</executions>
<configuration>
<jvmTarget>1.8</jvmTarget>
</configuration>
</plugin>
嗯,在清除了所有IntelliJ项目文件(*.iml
文件和.idea
directory)之后,一切都运行良好,即使在调试中也是如此。
问题内容: 我想将测试包打包到jar文件中。如何从Maven插件Surefire执行生成测试包 问题答案: 您可以在pom中添加以下条目:
主要内容:创建单元测试我们可以在 IntelliJ IDEA 中运行所有单元测试。IntelliJ IDEA 有各种单元测试框架,如 JUnit、TestNG 等等。在本节中,我们将了解单元测试的工作原理。在这里,我们将使用 JUnit 4: 创建单元测试 按照下面给出的步骤创建单元测试: 1. 创建项目 2. 在 src 文件夹中,创建一个Java 类文件并输入以下代码。 3. 创建一个名为Test的新目录来执行单元
我目前正在与CDI Unit合作一个项目,我遇到了一个奇怪的问题。我试图在一个简单的项目中重现它: 我有一个使用CdiRunner运行的测试类(如下所述:http://jglue.org/cdi-unit-user-guide/我的测试类注入了被测试的单元:UUD。这个类扩展了一个超级类“ParentTestClass”,它目前是无用的。 测试课。爪哇: 正如我提到的,父类是空的。 ParentT
问题内容: 有什么工具可以自动生成 Java 代码的单元测试? 更新: 主要用途是为将要重构的遗留代码快速生成单元测试。自动生成后,无需自动使测试与代码保持同步。 在这里提出了几乎相同的问题,但是答案是.NET而不是Java(Pex是公认的答案): 问题答案: CodePro Analytix有一个JUnit测试生成模块,听起来像它可以完成您想要的。请参阅《用户指南》。 [CoView]是价格合理
我实现了一个新类Holder。目标如下: 三个领域。字段1和2是整数,字段3是布尔值 这给我留下的问题是有50个可能的构造函数选项。5 X 5 X 2。这是不明智的或可扩展的(添加第6种类型,我必须编写一个巨大的更改),所以我使用了构建器模式: 这真的很有效。我有5个用于字段1初始化的生成器方法,5个用于字段2初始化的生成器方法,还有一个用于布尔值。设置字段后,调用build()方法,该方法使用格
我刚刚安装了IntelliJ,并试图构建一个Scala项目。但是,每次这样做时,我都会得到这个错误消息: