Both sides previous revisionPrevious revisionNext revision | Previous revisionLast revisionBoth sides next revision |
student:junit:v4 [2018/08/10 14:25] – bernstdh | student:junit:v4 [2018/08/14 10:57] – bernstdh |
---|
| |
| |
===== JUnit Basics ===== | ===== JUnit v4 Basics ===== |
| |
| |
| |
| |
JUnit is an open-source testing framework. It provides a way to write, organize, and run repeatable test. | JUnit is an open-source testing framework. It provides a way to write, organize, and run repeatable test. This page provides a brief introduction to v4. Information is also available about |
| [[student:junit:v5 | version 5 (Jupiter) ]]. |
| |
| |
| |
| |
For each class you want to test, you must create a file named //ClassName//Test.java where //ClassName// denotes the name of the class being tested. So, for example, if you want to test the class named ''%%Atom%%'' you must create a file named ''%%AtomTest.java%%''. | For each class you want to test, you must create a file. It is common to use naming system //ClassName//Test.java where //ClassName// denotes the name of the class being tested. So, for example, if you want to test the class named ''%%Atom%%'' you would create a file named ''%%AtomTest.java%%''. |
| |
| |
import static org.junit.Assert.*; | import static org.junit.Assert.*; |
| |
import org.junit.Before; | |
import org.junit.Test; | import org.junit.Test; |
| |
(Note: The ''%%import static%%'' allows you to refer to static members in the ''%%org.junit.Assert%%'' package without having to include the class name.) | (Note: The ''%%import static%%'' allows you to refer to static members in the ''%%org.junit.Assert%%'' package without having to include the class name.) |
| |
The file //ClassName//Test.java contains methods that can be used to test the class defined in //ClassName//.java. Each such method is preceeded by an ''%%@Test%%'' annotation. (Note: An annotation provides information about a program but is not part of the program. Annotations have no effect on the operation of the program. Instead, they are used to provide information to tools that might use the program as input.) | The file //ClassName//Test.java contains methods that can be used to test the class defined in //ClassName//.java. Each such method is preceded by an ''%%@Test%%'' annotation. (Note: An annotation provides information about a program but is not part of the program. Annotations have no effect on the operation of the program. Instead, they are used to provide information to tools that might use the program as input.) |
| |
So, still continuing with the example above, if the ''%%Atom%%'' class contains a ''%%public int getAtomicNumber()%%'' method, then ''%%AtomTest.java%%'' might include the following method: | So, still continuing with the example above, if the ''%%Atom%%'' class contains a ''%%public int getAtomicNumber()%%'' method, then ''%%AtomTest.java%%'' might include the following method: |
When using ''%%Assert.assertEquals()%%'' to compare floating point numbers (e.g., ''%%double%%'' values), one must remember that the ''%%==%%'' operator must be used with care because of the less-than-perfect precision of operations on ''%%double%%'' values. In JUnit, the implication of this is that one should check to see if ''%%double%%'' values are within a tolerance value of each other. Hence, when comparing ''%%double%%'' values one should use the following: | When using ''%%Assert.assertEquals()%%'' to compare floating point numbers (e.g., ''%%double%%'' values), one must remember that the ''%%==%%'' operator must be used with care because of the less-than-perfect precision of operations on ''%%double%%'' values. In JUnit, the implication of this is that one should check to see if ''%%double%%'' values are within a tolerance value of each other. Hence, when comparing ''%%double%%'' values one should use the following: |
| |
Assert.assertEquals(//Description//, //ExpectedValue//, //ActualValue//, //tolerance//); | ''Assert.assertEquals(//Description//, //ExpectedValue//, //ActualValue//, //tolerance//);'' |
| |
| |