elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  No encuentro el error, y llevo varios dias para pasar el test
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: No encuentro el error, y llevo varios dias para pasar el test  (Leído 1,729 veces)
NightForce

Desconectado Desconectado

Mensajes: 3


Ver Perfil
No encuentro el error, y llevo varios dias para pasar el test
« en: 1 Enero 2019, 12:01 pm »

Buenas estoy con un ejercicio de array de objetos, que tiene que pasar un test de JUnit4, pero el error que me da dice que es metodo toString el cual no encuentro ningun fallo. Si alguien puede ejecutarlo y decirme por que falla exactamente lo agradezco, paso los 3 codigos:

Fraccion: que es la clase fraccion con sus metodos suma, simplificar...
https://pastebin.com/qrTjJTj8

ArrayFraccion: La clase de array de objetos de tipo fraccion:
https://pastebin.com/pbpUw5uv

Y el test de JUnit4 que tiene que pasar:
https://pastebin.com/qG8UAvfY



En línea

rub'n


Desconectado Desconectado

Mensajes: 1.217


(e -> λ("live now")); tatuar -> λ("α");


Ver Perfil WWW
Re: No encuentro el error, y llevo varios dias para pasar el test
« Respuesta #1 en: 5 Enero 2019, 13:38 pm »

Buenas estoy con un ejercicio de array de objetos, que tiene que pasar un test de JUnit4, pero el error que me da dice que es metodo toString el cual no encuentro ningun fallo. Si alguien puede ejecutarlo y decirme por que falla exactamente lo agradezco, paso los 3 codigos:

Fraccion: que es la clase fraccion con sus metodos suma, simplificar...
https://pastebin.com/qrTjJTj8

ArrayFraccion: La clase de array de objetos de tipo fraccion:
https://pastebin.com/pbpUw5uv

Y el test de JUnit4 que tiene que pasar:
https://pastebin.com/qG8UAvfY




Que tal  dog ?

que te cuesta poner esto ?, o sea el Log ? tienes un NPE aka nullPointerException presente que no estas manejando


Código
  1. public ArrayFracciones(int fracciones) {
  2.        this.array = new Fraccion[fracciones];
  3. }


Código
  1. java.lang.NullPointerException
  2. at com.foro.ArrayFraccionesTestJUnit4.testA_ArrayFraccionesComprobarMetodos(ArrayFraccionesTestJUnit4.java:41)
  3. at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  4. at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
  5. at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  6. at java.lang.reflect.Method.invoke(Method.java:498)
  7. at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
  8. at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
  9. at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
  10. at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
  11. at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
  12. at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
  13. at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
  14. at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
  15. at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
  16. at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
  17. at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
  18. at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
  19. at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
  20. at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
  21. at org.junit.runner.JUnitCore.run(JUnitCore.java:160)
  22. at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)
  23. at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)
  24. at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
  25. at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
  26.  
  27.  
  28. java.lang.NullPointerException
  29. at com.foro.probarfracciones.ArrayFracciones.setArray(ArrayFracciones.java:32)
  30. at com.foro.ArrayFraccionesTestJUnit4.testB_ArrayFraccionesToStringArray1(ArrayFraccionesTestJUnit4.java:61)
  31. at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  32. at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
  33. at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  34. at java.lang.reflect.Method.invoke(Method.java:498)
  35. at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
  36. at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
  37. at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
  38. at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
  39. at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
  40. at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
  41. at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
  42. at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
  43. at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
  44. at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
  45. at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
  46. at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
  47. at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
  48. at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
  49. at org.junit.runner.JUnitCore.run(JUnitCore.java:160)
  50. at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)
  51. at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)
  52. at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
  53. at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
  54.  
  55.  
  56. org.junit.ComparisonFailure:
  57. Expected :ArrayFraccion: [<8/9>, <11/-21>, <1/3>, <1/7>, <7/5>, <11/9>, <-3/13>, ]
  58. Actual   :ArrayFracciones: [<8/9>, <11/-21>, <1/3>, <1/7>, <7/5>, <11/9>, <-3/13>]
  59. <Click to see difference>
  60.  
  61.  
  62. at org.junit.Assert.assertEquals(Assert.java:115)
  63. at org.junit.Assert.assertEquals(Assert.java:144)
  64. at com.testjava8.ArrayFraccionesTestJUnit4.testC_ArrayFraccionesToStringArray2(ArrayFraccionesTestJUnit4.java:71)
  65. at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  66. at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
  67. at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  68. at java.lang.reflect.Method.invoke(Method.java:498)
  69. at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
  70. at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
  71. at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
  72. at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
  73. at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
  74. at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
  75. at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
  76. at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
  77. at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
  78. at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
  79. at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
  80. at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
  81. at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
  82. at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
  83. at org.junit.runner.JUnitCore.run(JUnitCore.java:160)
  84. at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)
  85. at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)
  86. at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
  87. at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
  88.  
  89.  
  90. org.junit.ComparisonFailure:
  91. Expected :ArrayFraccion: [<11/3>, <11/-21>, <1/3>, <1/7>, <5/13>, <11/9>, <-3/13>, ]
  92. Actual   :ArrayFracciones: [<11/3>, <11/-21>, <1/3>, <1/7>, <5/13>, <11/9>, <-3/13>]
  93. <Click to see difference>
  94.  
  95.  
  96. at org.junit.Assert.assertEquals(Assert.java:115)
  97. at org.junit.Assert.assertEquals(Assert.java:144)
  98. at com.testjava8.ArrayFraccionesTestJUnit4.testD_ArrayFraccionesToStringArray3(ArrayFraccionesTestJUnit4.java:80)
  99. at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  100. at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
  101. at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  102. at java.lang.reflect.Method.invoke(Method.java:498)
  103. at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
  104. at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
  105. at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
  106. at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
  107. at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
  108. at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
  109. at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
  110. at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
  111. at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
  112. at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
  113. at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
  114. at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
  115. at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
  116. at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
  117. at org.junit.runner.JUnitCore.run(JUnitCore.java:160)
  118. at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)
  119. at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)
  120. at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
  121. at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
  122.  
  123. null
  124. null
  125. null
  126. null
  127. null
  128. null
  129. null
  130.  
  131. java.lang.NullPointerException
  132. at com.foro.probarfracciones.Fraccion.sumar(Fraccion.java:63)
  133. at com.foro.probarfracciones.ArrayFracciones.getSumaArray(ArrayFracciones.java:100)
  134. at com.foro.ArrayFraccionesTestJUnit4.testE_ArrayFraccionesEqualsCompareTo(ArrayFraccionesTestJUnit4.java:89)
  135. at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  136. at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
  137. at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  138. at java.lang.reflect.Method.invoke(Method.java:498)
  139. at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
  140. at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
  141. at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
  142. at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
  143. at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
  144. at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
  145. at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
  146. at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
  147. at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
  148. at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
  149. at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
  150. at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
  151. at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
  152. at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
  153. at org.junit.runner.JUnitCore.run(JUnitCore.java:160)
  154. at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)
  155. at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)
  156. at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
  157. at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
  158.  
  159.  
  160. Process finished with exit code -1
  161.  
  162.  


ok ok, bueno como decía el popular alias Jack the Ripper en inglés, aka Jack el destripador según mato a mas mujeres pero sin rastro, según su ultima victima fue Mary Jane Kelly

empecemos por trozos


Código
  1. package com.foro.probarfracciones;
  2.  
  3. import java.security.SecureRandom;
  4. import java.util.Objects;
  5. import java.util.stream.IntStream;
  6.  
  7. public class ArrayFracciones implements Comparable<Object> {
  8.  
  9.    private Fraccion[] array;
  10.  
  11.    private static final SecureRandom SECURE_RANDOM = new SecureRandom();
  12.  
  13.    /**
  14.      * hacer una descripcion de este constructor que te servira a ti mismo XD
  15.      *  "cantidadFracciones" sirve para dar solo el tamaño al array de fracciones con 4 posiciones
  16.      * cada posicion debes instanciar un objeto de tipo fraccion dog, porque sino los indices apuntaran a null, y es justo lo que pasa
  17.      * @param cantidadFracciones
  18.      */
  19.    public ArrayFracciones(int cantidadFracciones) {
  20.        Fraccion[] fracciones = new Fraccion[cantidadFracciones];
  21.  
  22.        /**
  23.          * Recorremos el arrays para llenarlo con numeros aleatorios del 1 al 10
  24.          * creamos la instancia de Francion en cada indice, porque sino apuntara a null, tu en realidad
  25.          * llamabas a este contructor solo asignando el tamaño, pero sin llenar sus posiciones con los objetos de fraccion
  26.          */
  27.        IntStream.range(0 , cantidadFracciones)
  28.                .forEach(e -> fracciones[e] = new Fraccion(getNum(),getNum()));
  29.  
  30.        this.array = fracciones;
  31.    }
  32.  
  33.    public static int getNum() {
  34.        return 1 + SECURE_RANDOM.nextInt(11);
  35.    }
  36.  
  37.    public ArrayFracciones(Fraccion[] array) {
  38.  
  39.        this.array = array;
  40.    }
  41.  
  42.    public ArrayFracciones(ArrayFracciones arrayFracciones) {
  43.        this.array = new Fraccion[arrayFracciones.getNumeroElementos()];
  44.  
  45.        for (short i = 0; i < arrayFracciones.getNumeroElementos(); i++) {
  46.            this.array[i] = arrayFracciones.getValorElemento(i);
  47.        }
  48.    }
  49.  
  50.    public Fraccion[] getArray() {
  51.        return this.array;
  52.    }
  53.  
  54.    public int getNumeroElementos() {
  55.        return this.array.length;
  56.    }
  57.  
  58.    public void setArray(Fraccion fraccion) {
  59.        for (short i = 0; i < this.array.length; i++) {
  60.            this.array[i].setNumerador(fraccion.getNumerador());
  61.            this.array[i].setDenominador(fraccion.getDenominador());
  62.        }
  63.    }
  64.  
  65.    public Fraccion getValorElemento(int posicion) {
  66.        try {
  67.            return Objects.requireNonNull(this.array[posicion] , () -> "array nulo ?");
  68.        } catch (ArrayIndexOutOfBoundsException e) {
  69.            System.out.println("ERROR: Posicion introducida no es valida: "
  70.                    + posicion + ", el array es de: "
  71.                    + this.array.length + " elementos");
  72.            return this.array[0];
  73.        }
  74.    }
  75.  
  76.    public boolean setValorElemento(int posicion, Fraccion fraccion) {
  77.        try {
  78.            this.array[posicion].setNumerador(fraccion.getNumerador());
  79.            this.array[posicion].setDenominador(fraccion.getDenominador());
  80.        } catch (ArrayIndexOutOfBoundsException e) {
  81.            System.out.println(e.getMessage());
  82.            return false;
  83.        } catch (Exception e) {
  84.            System.out.println(e.getMessage());
  85.            return false;
  86.        }
  87.  
  88.        return true;
  89.    }
  90.  
  91.    public Fraccion getMinimo() {
  92.        int fraccionMenor = this.array[0].getNumerador() / this.array[0].getDenominador();
  93.        int posicion = 0;
  94.  
  95.        for (short i = 1; i < this.array.length; i++) {
  96.            if (fraccionMenor > this.array[i].getNumerador() / this.array[i].getDenominador()) {
  97.                fraccionMenor = this.array[i].getNumerador() / this.array[i].getDenominador();
  98.                posicion = i;
  99.            }
  100.        }
  101.  
  102.        return this.array[posicion];
  103.    }
  104.  
  105.    public Fraccion getMaximo() {
  106.        int fraccionMayor = this.array[0].getNumerador() / this.array[0].getDenominador();
  107.        int posicion = 0;
  108.  
  109.        for (short i = 1; i < this.array.length; i++) {
  110.            if (fraccionMayor < this.array[i].getNumerador() / this.array[i].getDenominador()) {
  111.                fraccionMayor = this.array[i].getNumerador() / this.array[i].getDenominador();
  112.                posicion = i;
  113.            }
  114.        }
  115.  
  116.        return this.array[posicion];
  117.    }
  118.  
  119.    public Fraccion getSumaArray() {
  120.  
  121.        Fraccion fraccionSuma = new Fraccion(21,23);
  122.  
  123.  
  124. for (short i = 0; i < this.array.length; i++) {
  125. fraccionSuma = Fraccion.sumar(this.array[i],fraccionSuma);
  126. }
  127.  
  128.  
  129.        for (short i = 0; i < this.array.length; i++) {
  130.            fraccionSuma = Fraccion.sumar(fraccionSuma, this.getValorElemento(i));
  131.        }
  132.  
  133.        return fraccionSuma.simplificar();
  134.    }
  135.  
  136.    /**
  137.      * Aqui con StringBuilder en tu test JUnit no te dara igual en el Assert nunca, xq debes de manejar aqui varias cosas
  138.      *
  139.      * por ejemplo el eliminar el >, ]  
  140.      *
  141.      * ese espacio con esa coma al *final* puedes hacerlo esta manera
  142.      *
  143.      * @return String
  144.      */
  145.    @Override
  146.    public String toString() {
  147.        String cadena = "ArrayFracciones: [";
  148.  
  149.        for (short i = 0; i < this.array.length; i++) {
  150.            cadena += "<" + this.array[i].getNumerador() + "/" + this.array[i].getDenominador() + ">, ";
  151.        }
  152.        cadena += "]";
  153.  
  154.        final StringBuilder stringBuilder = new StringBuilder(cadena);
  155.  
  156.        //reemplazando la ultima , con delete
  157.        final StringBuilder replace = stringBuilder.delete(cadena.length() -3 , cadena.length());
  158.        replace.append("]");
  159.  
  160.        return replace.toString();
  161.    }
  162.  
  163.    @Override
  164.    public boolean equals(Object objeto) {
  165.        Fraccion[] arrayFracciones = (Fraccion[]) objeto;
  166.  
  167.        for (short i = 0; i < this.array.length; i++) {
  168.            if (this.array[i].getNumerador() == arrayFracciones[i].getNumerador() && this.array[i].getDenominador() == arrayFracciones[i].getDenominador()) {
  169.                return false;
  170.            }
  171.        }
  172.  
  173.        return true;
  174.    }
  175.  
  176.    @Override
  177.    public int compareTo(Object objeto) {
  178.        Fraccion[] arrayFracciones = (Fraccion[]) objeto;
  179.        Fraccion fraccionSuma = new Fraccion(0, 1);
  180.  
  181.        for (short i = 0; i < this.getNumeroElementos(); i++) {
  182.            fraccionSuma = Fraccion.sumar(fraccionSuma, this.getValorElemento(i));
  183.        }
  184.  
  185.        fraccionSuma.simplificar();
  186.  
  187.        if (this.equals(objeto)) {
  188.            return 0;
  189.        } else if ((this.getSumaArray().getNumerador() / this.getSumaArray().getDenominador()) > (fraccionSuma.getNumerador() / fraccionSuma.getDenominador())) {
  190.            return -1;
  191.        } else {
  192.            return 1;
  193.        }
  194.    }
  195.  
  196. }
  197.  

Código
  1. package com.foro.probarfracciones;
  2.  
  3. public class Fraccion implements Comparable<Object> {
  4.  
  5.    private int numerador;
  6.    private int denominador;
  7.  
  8.    public Fraccion() {
  9.        this.numerador = 0;
  10.        this.denominador = 1;
  11.    }
  12.  
  13.    public Fraccion(int numerador, int denominador) {
  14.        this.setNumerador(numerador);
  15.        this.setDenominador(denominador);
  16.    }
  17.  
  18.    /**
  19.      * constructor no usado, esos constructores que no usas, pues puedes quitarlos
  20.      * @param fraccion
  21.      */
  22.    public Fraccion(Fraccion fraccion) {
  23.        this.numerador = fraccion.getNumerador();
  24.        this.denominador = fraccion.getDenominador();
  25.    }
  26.  
  27.    public int getNumerador() {
  28.        return this.numerador;
  29.    }
  30.  
  31.    public void setNumerador(int numerador) {
  32.        this.numerador = numerador;
  33.    }
  34.  
  35.    public int getDenominador() {
  36.        return this.denominador;
  37.    }
  38.  
  39.    public void setDenominador(int denominador) {
  40.        this.denominador = denominador;
  41.    }
  42.  
  43.    @Override
  44.    public String toString() {
  45.        return this.numerador + "/" + this.denominador;
  46.    }
  47.  
  48.    public boolean equals(Fraccion fraccion) {
  49.        if (this.numerador == fraccion.denominador && this.denominador == fraccion.denominador) {
  50.            return true;
  51.        } else {
  52.            return false;
  53.        }
  54.    }
  55.  
  56.    public Fraccion sumar(Fraccion fraccion) {
  57.        Fraccion fraccionResultante = new Fraccion();
  58.  
  59.        fraccionResultante.denominador = mcd(this.denominador, fraccion.denominador);
  60.        fraccionResultante.numerador = (this.numerador * (fraccionResultante.denominador / this.denominador)) + (fraccion.numerador * (fraccionResultante.denominador / fraccion.denominador));
  61.  
  62.        return fraccionResultante;
  63.    }
  64.  
  65.    public static Fraccion sumar(Fraccion fraccionA, Fraccion fraccionB) {
  66.        Fraccion fraccionResultante = new Fraccion();
  67.  
  68.        fraccionResultante.denominador = mcd(fraccionA.denominador, fraccionB.denominador);
  69.        fraccionResultante.numerador = (fraccionA.numerador * (fraccionResultante.denominador / fraccionA.denominador)) + (fraccionB.numerador * (fraccionResultante.denominador / fraccionB.denominador));
  70.  
  71.        return fraccionResultante;
  72.    }
  73.  
  74.    public Fraccion restar(Fraccion fraccion) {
  75.        Fraccion fraccionResultante = new Fraccion();
  76.        fraccionResultante.denominador = mcd(this.denominador, fraccion.denominador);
  77.        fraccionResultante.numerador = (this.numerador * (fraccionResultante.denominador / this.denominador)) - (fraccion.numerador * (fraccionResultante.denominador / fraccion.denominador));
  78.  
  79.        return fraccionResultante;
  80.    }
  81.  
  82.    public Fraccion multiplicar(Fraccion fraccion) {
  83.        Fraccion fraccionResultante = new Fraccion();
  84.  
  85.        fraccionResultante.numerador = this.numerador * fraccion.denominador;
  86.        fraccionResultante.denominador = this.denominador * fraccion.denominador;
  87.  
  88.        return fraccionResultante;
  89.    }
  90.  
  91.    public Fraccion dividir(Fraccion fraccion) {
  92.        Fraccion fraccionResultante = new Fraccion();
  93.  
  94.        fraccionResultante.numerador = this.numerador * fraccion.denominador;
  95.        fraccionResultante.denominador = this.denominador * fraccion.numerador;
  96.  
  97.        return fraccionResultante;
  98.    }
  99.  
  100.    private static int mcd(int u, int v) {
  101.        Math.abs(u);
  102.        Math.abs(v);
  103.  
  104.        if (v == 0) {
  105.            return u;
  106.        } else {
  107.            return mcd(v, u % v);
  108.        }
  109.    }
  110.  
  111.    public Fraccion simplificar() {
  112.        int dividir = Fraccion.mcd(this.numerador, this.denominador);
  113.        this.numerador /= dividir;
  114.        this.denominador /= dividir;
  115.        return this;
  116.    }
  117.  
  118.    @Override
  119.    public int compareTo(Object objeto) {
  120.        Fraccion fraccion = (Fraccion) objeto;
  121.        double numerador = this.getNumerador();
  122.        double denominador = this.getDenominador();
  123.        double resultadoFraccion1 = numerador / denominador;
  124.        double resultadoFraccion2 = 0.0;
  125.  
  126.        numerador = fraccion.getNumerador();
  127.        denominador = fraccion.getDenominador();
  128.        resultadoFraccion2 = numerador / denominador;
  129.  
  130.  
  131.        if (resultadoFraccion1 == resultadoFraccion2) {
  132.            return 0;
  133.        } else {
  134.            if (resultadoFraccion1 < resultadoFraccion2) {
  135.                return 1;
  136.            } else {
  137.                return -1;
  138.            }
  139.        }
  140.  
  141.    }
  142.  
  143. }


Actual log del JUnit


Código
  1. java.lang.AssertionError: Error: El valor del elemento [2] del array1 deberia ser 1/1 y es 2/9
  2.  
  3. at org.junit.Assert.fail(Assert.java:88)
  4. at org.junit.Assert.assertTrue(Assert.java:41)
  5. at com.testjava8.ArrayFraccionesTestJUnit4.testA_ArrayFraccionesComprobarMetodos(ArrayFraccionesTestJUnit4.java:42)
  6. at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  7. at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
  8. at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  9. at java.lang.reflect.Method.invoke(Method.java:498)
  10. at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
  11. at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
  12. at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
  13. at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
  14. at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
  15. at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
  16. at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
  17. at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
  18. at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
  19. at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
  20. at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
  21. at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
  22. at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
  23. at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
  24. at org.junit.runner.JUnitCore.run(JUnitCore.java:160)
  25. at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)
  26. at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)
  27. at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
  28. at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
  29.  
  30.  
  31. java.lang.AssertionError: Error: El valor suma del array4 deberia ser 617/140 y es 0/1
  32.  
  33. at org.junit.Assert.fail(Assert.java:88)
  34. at org.junit.Assert.assertTrue(Assert.java:41)
  35. at com.testjava8.ArrayFraccionesTestJUnit4.testE_ArrayFraccionesEqualsCompareTo(ArrayFraccionesTestJUnit4.java:103)
  36. at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  37. at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
  38. at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  39. at java.lang.reflect.Method.invoke(Method.java:498)
  40. at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
  41. at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
  42. at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
  43. at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
  44. at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
  45. at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
  46. at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
  47. at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
  48. at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
  49. at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
  50. at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
  51. at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
  52. at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
  53. at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
  54. at org.junit.runner.JUnitCore.run(JUnitCore.java:160)
  55. at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)
  56. at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)
  57. at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
  58. at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
  59.  
  60.  
  61. Process finished with exit code -1
  62.  

como crees que hice eso? depurando con el IDE , lo primero que me di cuenta fue el NPE, tu también puedes hacerlo


« Última modificación: 7 Enero 2019, 16:27 pm por rub'n » En línea



rubn0x52.com KNOWLEDGE  SHOULD BE FREE.
If you don't have time to read, you don't have the time (or the tools) to write, Simple as that. Stephen ki
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines