Test avec junit

Fermé
polak1982 Messages postés 13 Date d'inscription dimanche 24 novembre 2013 Statut Membre Dernière intervention 6 septembre 2021 - 24 nov. 2013 à 15:25
KX Messages postés 16668 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 17 mars 2023 - 24 nov. 2013 à 18:08
Bonjour tout le monde,

Je souhaite effectuer un test junit avec les données contenues dans cette classe ShapeTest mais

je n'arrive pas à implémenter la méthode area ,

j'ai besoin de votre aide.

public class Shape {


private int x ;
private int y ;

public Shape(int x, int y)
{
this.x = x ;
this.y = y ;
}

public Shape(StringWriter out) {
// TODO Auto-generated constructor stub
}

public int getX()
{
return x ;
}

public int getY()
{
return y ;
}



}

public class Rectangle extends Shape{

private int width ;
private int height ;

public Rectangle(int x, int y, int width, int height) {
super(x, y);
this.width = width;
this.height = height;
// TODO Auto-generated constructor stub
}

public int getWidth() {
return width;
}

public void setWidth(int width) {
this.width = width;
}

public int getHeight() {
return height;
}

public void setHeight(int height) {
this.height = height;
}
public double getSurface( ) { return (width*height);}
public double getPerimetre( ) { return ((width + height)*2);}
public String toString( ) { return "Width = " + width + " Height = " + height; }



}

public class ShapesTest {

private StringWriter out;
private Shape shapes;

@Before
public void initWriter() {
out = new StringWriter();
shapes = new Shapes(out);
}
@Test
public void rectangle() throws IOException {
shapes.aera("RECTANGLE", "50,20");
assertEquals("1000\n", out.toString());
}


}

La méthode aera doit être implémentée dans la classe Shape puis un appel de cette methode dans la classe de test Shapetest permet de faire des jeux de tests
            
                

1 réponse

KX Messages postés 16668 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 17 mars 2023 3 005
Modifié par KX le 24/11/2013 à 15:53
"je n'arrive pas à implémenter la méthode area"
Et qu'est-elle censée faire ? La méthode getSurface calcule déjà l'aire du rectangle...

import org.junit.Assert;
import org.junit.Test;

public class RectangleTest
{
    @Test
    public void testSurface()
    {
        Rectangle rect = new Rectangle(0, 0, 50, 20);
        Assert.assertEquals(1000, rect.getSurface(), Math.ulp(1000.0));
    }    
}
La confiance n'exclut pas le contrôle
0
polak1982 Messages postés 13 Date d'inscription dimanche 24 novembre 2013 Statut Membre Dernière intervention 6 septembre 2021
24 nov. 2013 à 17:44
Merci KX pour ta réponse..

Mais en fait j'ai des érreurs sur cette classe:


public class FactorsTest extends TestCase{

@Test
public void finalResult() {
Factors commonDenominator = new Factors();
Integer[] denominators = new Integer[]{2,3,3,3};
assertEquals(Arrays.asList(denominators), commonDenominator.generate(54));
}

@Test
public void test() {
fail("Not yet implemented");
}

}


public class Factors {


public boolean generate(int number) {
boolean primes = true;
if (number < 0) {
primes = false;
} else if (number != 0 && number != 1) {
for (int i = 2; i <= number/2; i++) {
if (number != i && number % i == 0) {
primes = false;
break;
}
}
}
return primes;
}
}

Merci par avance, le test junit est KO
0
KX Messages postés 16668 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 17 mars 2023 3 005
24 nov. 2013 à 18:08
Évidement que ton test échoue, ta méthode renvoie un boolean et tu le compares avec un tableau d'entiers, ça ne peux pas être correct...

Remarque : ta méthode generate devrait être static car elle ne dépend d'aucun attribut, ensuite son nom est très mal choisi, il ne permet pas de savoir ce qu'elle fait, en l'occurrence un test de primalité. Attention : 1 n'est pas censé être un nombre premier !

Autre remarque : par convention une méthode de test JUnit commence par "test".

@Test
public void testGenerate()
{
    //assertEquals(false, Factors.generate(1));
    assertEquals(true,  Factors.generate(2));
    assertEquals(true,  Factors.generate(3));
    assertEquals(false, Factors.generate(4));
    assertEquals(true,  Factors.generate(5));            
    assertEquals(true,  Factors.generate(1789));
}
0