Difference between revisions of "Tópicos sobre escrita de testes com JUnit/Testing the blobbiness of blobs"

From Wiki**3

< Tópicos sobre escrita de testes com JUnit
Line 1: Line 1:
 +
A classe Blob define o método equals, que deve apresentar as propriedades habituais (a.equals(b) => b.equals(a), etc.). Define ainda o método blob, descrevendo a semântica da interacção entre blobs.
 +
 +
<java5>
 
  public class Blob {
 
  public class Blob {
 
   int _radius;
 
   int _radius;
Line 26: Line 29:
 
   
 
   
 
  }
 
  }
 +
</java5>
  
The test class:
+
A classe de teste (BlobTest) é definida sobre as propriedades esperadas para o método equals (testEquals) e sobre o funcionamento do método blob (testBlobbiness). O método suite tem uma função semelhante ao da função main, permitindo agrupar vários testes para execução conjunta.
  
 +
<java5>
 
  import junit.framework.Assert;
 
  import junit.framework.Assert;
 
  import junit.framework.Test;
 
  import junit.framework.Test;
Line 79: Line 84:
 
   
 
   
 
  }  // end of BlobTest
 
  }  // end of BlobTest
 +
</java5>
  
 
== Como compilar? ==
 
== Como compilar? ==

Revision as of 17:52, 25 October 2009

A classe Blob define o método equals, que deve apresentar as propriedades habituais (a.equals(b) => b.equals(a), etc.). Define ainda o método blob, descrevendo a semântica da interacção entre blobs.

<java5>

public class Blob {
 int _radius;
 int _weight;

 public Blob(int r, int w) {
   _radius = r;
   _weight = w;
 }

 public int getRadius() { return _radius; }
 public int getWeight() { return _weight; }

 public boolean equals(Blob b) {
   if (b == null) return false;
   return _radius == b.getRadius() && _weight == b.getWeight();
 }

 public boolean equals(Object o) {
   return o instanceof Blob && equals((Blob)o);
 }

 public Blob blob(Blob b) {
   if (_radius < b.getRadius() || _weight < b.getWeight()) return this;
   return new Blob(_radius + b.getRadius(), _weight + b.getWeight());
 }

}

</java5>

A classe de teste (BlobTest) é definida sobre as propriedades esperadas para o método equals (testEquals) e sobre o funcionamento do método blob (testBlobbiness). O método suite tem uma função semelhante ao da função main, permitindo agrupar vários testes para execução conjunta.

<java5>

import junit.framework.Assert;
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;

public class BlobTest extends TestCase {

 private Blob _smallBlob;
 private Blob _largeBlob;

 public BlobTest() {}
 public BlobTest(String s) { super(s); }

 protected void setUp() {
   _smallBlob = new Blob(1, 2);
   _largeBlob = new Blob(100, 200);
 }

 public void testEquals() {
   Assert.assertTrue(!_smallBlob.equals(null));
   Assert.assertTrue(!_largeBlob.equals(null));
   Assert.assertEquals(_smallBlob, new Blob(1, 2));
   Assert.assertEquals(_largeBlob, new Blob(100, 200));
   Assert.assertFalse(_smallBlob.equals(_largeBlob));
   Assert.assertFalse(_largeBlob.equals(_smallBlob));
 }

 public void testBlobbiness() {
   Blob b1 = new Blob(101, 202);
   Blob b2 = _largeBlob.blob(_smallBlob);
   Blob b3 = _smallBlob.blob(_largeBlob);
   Assert.assertEquals(b1, b2);
   Assert.assertEquals(_smallBlob, b3);
 }

 public static Test suite() {
   TestSuite suite = new TestSuite();
   suite.addTest(new BlobTest("test equalities") {
                   protected void runTest() { testEquals(); }
                 });
   suite.addTest(new BlobTest("test blobbiness") {
                   protected void runTest() { testBlobbiness(); }
                 });
   suite.addTest(new BlobTest("testBlobbiness"));
   // Failure: method "smallTest" does not exist
   // suite.addTest(new BlobTest("smallTest"));  
   return suite;
 }

}  // end of BlobTest

</java5>

Como compilar?

 javac Blob.java
 javac -cp path/to/file/junit.jar:. BlobTest.java

Exemplo:

 javac -cp /usr/share/java/junit.jar:. BlobTest.java

Como executar os testes?

 java -cp path/to/file/junit.jar:. junit.textui.TestRunner BlobTest

Exemplo:

 java -cp /usr/share/java/junit.jar:. junit.textui.TestRunner BlobTest