24

What is the use of a Junit @Before and @Test annotations in java? How can I use them with netbeans?

tkruse
  • 10,222
  • 7
  • 53
  • 80

2 Answers2

56

Can you be more precise? Do you need to understand what are @Before and @Test annotation?

@Test annotation is an annotation (since JUnit 4) that indicates the attached method is an unit test. That allows you to use any method name to have a test. For example:

@Test
public void doSomeTestOnAMethod() {
  // Your test goes here.
  ...
}

The @Before annotation indicates that the attached method will be run before any test in the class. It is mainly used to setup some objects needed by your tests:

(edited to add imports) :

import static org.junit.Assert.*; // Allows you to use directly assert methods, such as assertTrue(...), assertNull(...)

import org.junit.Test; // for @Test
import org.junit.Before; // for @Before

public class MyTest {

    private AnyObject anyObject;

    @Before
    public void initObjects() {
        anyObject = new AnyObject();
    }

    @Test
    public void aTestUsingAnyObject() {
        // Here, anyObject is not null...
        assertNotNull(anyObject);
        ...
    }

}
Ondrej Bozek
  • 10,987
  • 7
  • 54
  • 70
Romain Linsolas
  • 79,475
  • 49
  • 202
  • 273
  • hey thanks a lot..this is what i wanted to know..What packages do i add to use the @test and @ before annotations and how do i do it in netbeans? –  Feb 10 '09 at 08:03
  • As provided in romaintaz' answer: import org.junit.Test; // for @Test import org.junit.Before; // for @Before – guerda Feb 10 '09 at 13:09
  • @romaintaz - Does the '@Before' method run before each of the tests in the file or does it run once for all the tests in the file? – ziggy Feb 18 '12 at 13:26
  • 3
    @ziggy '@Before' is called before every test in the class. Use '@BeforeClass' on a static method to run the method only once, for ex. To initialize your tests context. – Romain Linsolas Feb 19 '12 at 10:07
  • 1
    Is it before *any* test or before *each* test (as guerda says)? The documentation is unclear, but I suspect guerda has the right of it. Please update your answer if you have it wrong here. – B T Sep 13 '13 at 16:45
22
  1. If I understood you correctly, you want to know, what the annotation @Before means. The annotation marks a method as to be executed before each test will be executed. There you can implement the old setup() procedure.

  2. The @Test annotation marks the following method as a JUnit test. The testrunner will identify every method annotated with @Test and executes it. Example:

    import org.junit.*;
    
    public class IntroductionTests {
        @Test
        public void testSum() {
          Assert.assertEquals(8, 6 + 2);
        }
    }
    
  3. How can i use it with Netbeans? In Netbeans, a testrunner for JUnit tests is included. You can choose it in your Execute Dialog.

Marcelo
  • 2,232
  • 3
  • 22
  • 31
guerda
  • 23,388
  • 27
  • 97
  • 146
  • Hi am sorry i meant @ test annotation and how do i add the JUNIt package and use it in my netbeans project. –  Feb 10 '09 at 08:12