Test avec junit

polak1982 Messages postés 13 Statut Membre -  
KX Messages postés 19031 Statut Modérateur -
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
            
            
A voir également:

1 réponse

KX Messages postés 19031 Statut Modérateur 3 020
 
"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 Statut Membre
 
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 19031 Statut Modérateur 3 020
 
É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