2017-07-20 1 views
1

Je travaille sur un projet au collège dans lequel je dois créer mes propres objets, avec des données privées, des méthodes, etc. Ce n'est pas un système de travail complet avec une interface utilisateur ; C'est juste une chance de créer des classes, de les instancier et de les tester.comment tester un IllegalArgumentException levé

La question est que je suis en train de créer une méthode d'essai qui teste un jeté IllegalArgumentException dans un constructeur appelé DinetteStore:

public DinetteStore(int tableInventory, int chairInventory, int leafInventory){ 
     if (tableInventory < 0 || leafInventory < 0 || chairInventory < 0){ 
      throw new IllegalArgumentException ("Inventory must not be out of range of required order"); 
     } 

     this.tableInventory = tableInventory; 
     this.chairInventory = chairInventory; 
     this.leafInventory = leafInventory; 
     this.totalSales = 0; 
     this.numSales = 0; 
    } 

Le code dans la classe de test est répertorié ici:

@Test (expected = IllegalArgumentException.class) 
    public void testIllegalArgumentChair() { 
     int tableInventory = -1 || int leafInventory = -1 || chairInventory = -1; 

    } 

Je rencontre un problème où j'obtiens une erreur .class attendue ou une erreur de début d'expression illégal. L'IDE que j'utilise est BlueJ 4.1.0 Y a-t-il quelque chose qui me manque syntaxiquement ici? Toute aide serait sûrement appréciée.

Répondre

2
@Test (expected = IllegalArgumentException.class) 
public void testIllegalArgumentChair() { 
    DinetteStore d = new DinetteStore(-1,-1,-1); 
} 

Dans le test, vous devez appeler la méthode qui jetteront l'exception, sinon vous ne serez jamais l'exception prévue

2

Votre classe de test est curieusement formaté. Vous essayez d'instancier un DinetteStore avec des paramètres illicites, de sorte que vous voulez:

@Test (expected = IllegalArgumentException.class) 
public void testIllegalArgumentChair() { 
    int tableInventory = -1; 
    int leafInventory = -1; 
    int chairInventory = -1; 
    DinetteStore creationWillFail = new DinetteStore(tableInventory, 
                leafInventory, 
                chairInventory); 
} 
3

Vous n'êtes pas instanciez class qui jeter le exception. Et la syntaxe que vous avez n'est pas correcte, il devrait être quelque chose comme:

@Test (expected = IllegalArgumentException.class) 
public void testIllegalArgumentChair() { 
     DinetteStore willFail = new DinetteStore(-1, -1, -1); 
}