Mi assertEquals está devolviendo el nombre del paquete cuando ejecuto una prueba de Maven.
Tengo una clase TestEntry:
@Test
void testFloatConstructor() {
Entry floatTest = new Entry(1);
assertEquals(floatTest.number, 1, "Prueba que el constructor establece
el número flotante de Entry en 1");
}
<p>@Test
void testSymbolConstructor() {
Symbol symbolTestSign = new Symbol(Symbol.MINUS);
Entry symbolTest = new Entry(symbolTestSign);
assertEquals(symbolTest.other, Symbol.MINUS, "Prueba que el
constructor establece el símbolo como signo -");
}
```</p>
y la clase Entry actual:
```java
float number;
Symbol other;
String str;
Type type;
public Entry(float value) {
this.number = value;
}
public Entry(Symbol which) {
this.other = which;
}
La prueba para testFloatConstructor()
funciona bien, pero cuando ejecuto testSymbolConstructor()
, el valor expected solo muestra el nombre de mi paquete (el valor actual es correcto, devuelve -). ¿Qué está causando esto? ¿No estoy construyendo la clase de símbolo correctamente?
enum Symbols {
LEFT<em>BRACKET,
RIGHT</em>BRACKET,
TIMES,
DIVIDE,
PLUS,
MINUS,
INVALID
}
public static final String MINUS = "-";
public static final String PLUS = "+";
String symbol;
public Symbol() {
}
public Symbol(String symbol) {
this.symbol = symbol;
}
Aún no he terminado la clase Symbol ya que estoy programando con TDD e intentando que esta prueba pase primero. Incluso con trampas/hard-coding, no puedo hacer que funcione.
¡Gracias por cualquier ayuda!
davy.ai
El problema está con el constructor de la clase
Symbol
. La pruebatestSymbolConstructor()
intenta crear un nuevo objetoSymbol
con un argumento deSymbol.MINUS
, el cual en realidad es una constante de tipoString
definida en el enumSymbols
.Para solucionarlo, puedes cambiar el constructor de
Symbol
para que tome como argumento un enumSymbols
en lugar de unString
. Luego, puedes usar una declaración switch para asignar el valor desymbol
según el enum de entrada.Clase
Symbol
actualizada:Luego, en la prueba
testSymbolConstructor()
, puedes crear un nuevo objetoSymbol
con un argumento deSymbols.MINUS
:Esto debería solucionar el problema y hacer que la prueba sea exitosa.