Assertion compilation fails when class has a template field
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 50/100
- Tipo di issue
- Bug
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Ferma
- Stack tecnologico
- java
- Ambito
- build-system, testing
Direzione di ricerca
Riproduci il malfunzionamento con la configurazione del plugin Maven mostrata e l’esempio di TemplateClassField, quindi esamina il percorso del generatore che crea la classe di asserzione e le relative firme dei metodi. Il lavoro è completato quando l’asserzione generata conserva il parametro di tipo, il metodo hasModel(T model) compila e un test di regressione copre il caso del campo template.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
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.
- Lingua principale
- Java
- Stelle
- 72
- Fork
- 47
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di assertj/assertj-generator
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 35/100
assertj/assertj-generator#278 ·
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 30/100
assertj/assertj-generator#220 ·
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
assertj/assertj-generator#219 ·
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
assertj/assertj-generator#204 · 1 reazione ·
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
assertj/assertj-generator#197 · 7 commenti ·
Tutte le issue di assertj/assertj-generator
Issue simili
-
type: possible bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
grimmory-tools/grimmory#2850 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 90/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
aoqia194/leaf-loader#19 ·