diff options
Diffstat (limited to 'junit4/doc/ReleaseNotes4.5.txt')
-rw-r--r-- | junit4/doc/ReleaseNotes4.5.txt | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/junit4/doc/ReleaseNotes4.5.txt b/junit4/doc/ReleaseNotes4.5.txt new file mode 100644 index 0000000..66aac70 --- /dev/null +++ b/junit4/doc/ReleaseNotes4.5.txt @@ -0,0 +1,96 @@ +## Summary of Changes in version 4.5 ## + +### Installation ### + +- We are releasing `junit-4.5.jar`, which contains all the classes + necessary to run JUnit, and `junit-dep-4.5.jar`, which leaves out + hamcrest classes, for developers who already use hamcrest outside of + JUnit. + +### Basic JUnit operation ### + +- JUnitCore now more often exits with the correct exit code (0 for + success, 1 for failure) + +- Badly formed test classes (exceptions in constructors, classes + without tests, multiple constructors, Suite without @SuiteClasses) + produce more helpful error messages + +- Test classes whose only test methods are inherited from superclasses + now run. + +- Optimization to annotation processing can cut JUnit overhead by more than half + on large test classes, especially when using Theories. [Bug 1796847] + +- A failing assumption in a constructor ignores the class + +- Correct results when comparing the string "null" with potentially + null values. [Bug 1857283] + +- Annotating a class with `@RunWith(JUnit4.class)` will always invoke the + default JUnit 4 runner in the current version of JUnit. This default changed + from `JUnit4ClassRunner` in 4.4 to `BlockJUnit4ClassRunner` in 4.5 (see below), + and may change again. + +### Extension ### + +- `BlockJUnit4Runner` is a new implementation of the standard JUnit 4 + test class functionality. In contrast to `JUnit4ClassRunner` (the old + implementation): + + - `BlockJUnit4Runner` has a much simpler implementation based on + Statements, allowing new operations to be inserted into the + appropriate point in the execution flow. + + - `BlockJUnit4Runner` is published, and extension and reuse are + encouraged, whereas `JUnit4ClassRunner` was in an internal package, + and is now deprecated. + +- `ParentRunner` is a base class for runners that iterate over + a list of "children", each an object representing a test or suite to run. + `ParentRunner` provides filtering, sorting, `@BeforeClass`, `@AfterClass`, + and method validation to subclasses. + +- `TestClass` wraps a class to be run, providing efficient, repeated access + to all methods with a given annotation. + +- The new `RunnerBuilder` API allows extending the behavior of + Suite-like custom runners. + +- `AssumptionViolatedException.toString()` is more informative + +### Extra Runners ### + +- `Parameterized.eachOne()` has been removed + +- New runner `Enclosed` runs all static inner classes of an outer class. + +### Theories ### + +- `@Before` and `@After` methods are run before and after each set of attempted parameters + on a Theory, and each set of parameters is run on a new instance of the test class. + +- Exposed API's `ParameterSignature.getType()` and `ParameterSignature.getAnnotations()` + +- An array of data points can be introduced by a field or method + marked with the new annotation `@DataPoints` + +- The Theories custom runner has been refactored to make it faster and + easier to extend + +### Development ### + +- Source has been split into directories `src/main/java` and + `src/test/java`, making it easier to exclude tests from builds, and + making JUnit more maven-friendly + +- Test classes in `org.junit.tests` have been organized into + subpackages, hopefully making finding tests easier. + +- `ResultMatchers` has more informative descriptions. + +- `TestSystem` allows testing return codes and other system-level interactions. + +### Incompatible changes ### + +- Removed Request.classes(String, Class<?>...) factory method |