Assertion compilation fails when class has a template field
还没有人认领这个 Issue。
评估
- 难度
- 3/5
- 预计耗时
- 1-2 天
- 新手友好度
- 50/100
- Issue 类型
- 缺陷
- 描述清晰度
- 基本清楚
- 活跃度
- 停滞
- 技术栈
- java
- 领域
- build-system, testing
调研方向
使用所示的 Maven 插件配置和 TemplateClassField 示例复现故障,然后检查创建断言类及其方法签名的生成器路径。完成的标准是生成的断言保留类型参数,hasModel(T model) 方法能够编译,并且回归测试覆盖模板字段场景。
由索引模型根据 Issue 内容生成。
描述
Generations plugin versions in maven:
<plugin>
<groupId>org.assertj</groupId>
<artifactId>assertj-assertions-generator-maven-plugin</artifactId>
<version>2.2.0</version>
Test class
package testassertj;
import lombok.Data;
@Data
public class TemplateClassField<T> {
protected T model;
}
Generated assertion class:
package testassertj;
import org.assertj.core.api.AbstractObjectAssert;
import org.assertj.core.util.Objects;
/**
* {@link TemplateClassField} specific assertions - Generated by CustomAssertionGenerator.
*/
@javax.annotation.Generated(value="assertj-assertions-generator")
public class TemplateClassFieldAssert extends AbstractObjectAssert<TemplateClassFieldAssert, TemplateClassField> {
/**
* Creates a new <code>{@link TemplateClassFieldAssert}</code> to make assertions on actual TemplateClassField.
* @param actual the TemplateClassField we want to make assertions on.
*/
public TemplateClassFieldAssert(TemplateClassField actual) {
super(actual, TemplateClassFieldAssert.class);
}
/**
* An entry point for TemplateClassFieldAssert to follow AssertJ standard <code>assertThat()</code> statements.<br>
* With a static import, one can write directly: <code>assertThat(myTemplateClassField)</code> and get specific assertion with code completion.
* @param actual the TemplateClassField we want to make assertions on.
* @return a new <code>{@link TemplateClassFieldAssert}</code>
*/
@org.assertj.core.util.CheckReturnValue
public static TemplateClassFieldAssert assertThat(TemplateClassField actual) {
return new TemplateClassFieldAssert(actual);
}
/**
* Verifies that the actual TemplateClassField's model is equal to the given one.
* @param model the given model to compare the actual TemplateClassField's model to.
* @return this assertion object.
* @throws AssertionError - if the actual TemplateClassField's model is not equal to the given one.
*/
public TemplateClassFieldAssert hasModel(T model) {
// check that actual TemplateClassField we want to make assertions on is not null.
isNotNull();
// overrides the default error message with a more explicit one
String assertjErrorMessage = "\nExpecting model of:\n <%s>\nto be:\n <%s>\nbut was:\n <%s>";
// null safe check
T actualModel = actual.getModel();
if (!Objects.areEqual(actualModel, model)) {
failWithMessage(assertjErrorMessage, actual, model, actualModel);
}
// return the current assertion for method chaining
return this;
}
}
Compilation fails on public TemplateClassFieldAssert hasModel(T model) { method:
[ERROR] /C:/java/myproject/target/generated-test-sources/assertj-assertions/testassertj/TemplateClassFieldAssert.java:[37,44] cannot find symbol
[ERROR] symbol: class T
[ERROR] location: class testassertj.TemplateClassFieldAssert
Expected behaviour:
Generated assert class is also <T> templated, so that hasModel(T model) compiles successfully.
- 主要语言
- Java
- 星标
- 72
- 派生
- 47
- PR 合并指标
- 30 天内没有已合并 PR
贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
assertj/assertj-generator 的其他 Issue
-
难度 3/5 1-2 天 新手友好度 35/100
assertj/assertj-generator#278 ·
-
难度 5/5 一周以上 新手友好度 30/100
assertj/assertj-generator#220 ·
-
难度 5/5 一周以上 新手友好度 35/100
assertj/assertj-generator#219 ·
-
难度 5/5 一周以上 新手友好度 35/100
assertj/assertj-generator#204 · 1 个 reaction ·
-
难度 4/5 3-5 天 新手友好度 35/100
assertj/assertj-generator#197 · 7 条评论 ·
查看 assertj/assertj-generator 的全部 Issue
相似的 Issue
-
area/plugin
难度 2/5 1-3 小时 新手友好度 75/100
kestra-io/plugin-kestra#190 ·
-
难度 2/5 1-3 小时 新手友好度 70/100
google-ai-edge/LiteRT-LM#3739 ·
-
bug
难度 2/5 1-3 小时 新手友好度 75/100
-
难度 2/5 1-3 小时 新手友好度 75/100
integra-team-red/meet-map#249 ·
-
[Studio][Bug] Cancelled create-user dialog keeps the password and admin switch for the next attempt 未关闭
难度 2/5 1-3 小时 新手友好度 75/100
apache/rocketmq-dashboard#5064 ·