2010-03-30 3 views
2

J'essaie de terminer mon test de junit pour trouver la dérivée d'une méthode polynomiale et avoir quelques difficultés à la faire fonctionner. voici la méthode:Java et junit: dérivée de la question de test de la méthode polynomiale

public Polynomial derivative() { 
    MyDouble a = new MyDouble(0); 
    MyDouble b = this.a.add(this.a); 
    MyDouble c = this.b; 
    Polynomial poly = new Polynomial (a, b, c); 
    return poly; 
} 

et est ici le test JUnit:

public void testDerivative() { 
    MyDouble a = new MyDouble(2), b = new MyDouble(4), c = new MyDouble(8); 
    MyDouble d = new MyDouble(0), e = new MyDouble(4), f = new MyDouble(4); 

    Polynomial p1 = new Polynomial(a, b, c); 
    Polynomial p2 = new Polynomial(d,e,f); 
    assertTrue(p1.derivative().equals(p2)); 
} 

je ne suis pas trop sûr pourquoi il isnt travail ... ive allé plus encore et encore et je sais im manque quelque chose . merci à tous pour toute aide donnée, appréciez-la

+0

Sans rapport avec votre question initiale: si vous n'êtes pas déjà familier avec le fait que la vérification des nombres à virgule flottante pour l'égalité est très facile de se tromper, vous devriez vous y intéresser. – VoiceOfUnreason

Répondre

0

La méthode equals est-elle implémentée correctement?

0

Votre classe Polynomial met-elle en œuvre equals?

Sinon, il va à une comparaison de niveau d'objet. Cela signifie que les pointeurs des deux objets doivent correspondre pour qu'il soit égal. Vous devez implémenter equals pour montrer que les valeurs de Polynomial(a, b, c) == Polynomial(d, e, f).

Je ne sais pas ce que la structure de données de polynomiale est, mais vous ferais quelque chose comme:

public boolean equals(Polynomial p) 
{ 
    // where a b and c are private MyDouble variables 
    if (p.a == this.a && p.b == this.b && p.c == this.c) 
     return true; 
    else 
     return false; 
} 
3

Ce que les deux réponses précédentes sont faisant allusion à est que, si la classe polynomiale ne met pas en œuvre equals(), vous utilisez Object.equals() dans le test. Object.equals() vérifie que p1.derivative() et p2 sont le même objet (ce qu'ils ne sont clairement pas) quand vous voulez vérifier que p1.derivative() et p2 ont la même valeur ....

La solution habituelle consisterait à implémenter Polynomial.equals (polynomial rhs), ce qui permettrait de s'assurer que les trois MyDoubles de chaque côté sont égaux(). Bien sûr, vous devrez également vous assurer que MyDoubles.equals (MyDouble rhs) fait la bonne chose.

+1

Par exemple, la classe _JScience 'Polynomial' a l'implémentation correcte. http://jscience.org/api/org/jscience/mathematics/function/Polynomial.html – trashgod

Questions connexes