Knowledge Base > IntelliJ Plugin > Creating partial tests
Creating partial tests
About partial tests
Normally, selecting or
Write Tests
will create complete tests for a method. A complete test consists of Arrange, Act, and Assert sections and passes when executed. However, sometimes Diffblue Cover is not (yet) able to produce complete tests and will give the reason for not producing complete tests in the Diffblue Cover tool window. In these cases, Diffblue Cover will output partial tests. Such tests may be incomplete in various aspects:
- The test does not have assertions.
- The test does not always pass when executed.
- The Arrange or Act sections produce an error when executed.
- The test may execute code that is potentially harmful to your system, leaks resources or times out. Outputting such tests is useful to developers for two reasons:
- Firstly, it will save developers time over writing tests from scratch because they might be able to easily turn such a partial test into a complete one.
- Secondly, it may help developers understand why Diffblue Cover was not able to complete the test automatically in cases where the reason for not producing a test is lack of testability, for instance.
For example, for method increment
in the following class:
public class MyClass {
private int x;
public void increment() {
++x;
}
}
Diffblue Cover will produce a partial test
@Test
public void testIncrement() {
// TODO: This test is incomplete.
// Reason: R002 Missing observers.
// Diffblue Cover was unable to create an assertion.
// Add getters for the following fields or make them package-private:
// MyClass.x
// Arrange
MyClass m = new MyClass();
// Act
m.increment();
}
The problem is clearly that Diffblue Cover has no opportunity to assert on the side effect of the increment
method on field x
, which is marked private
. The developer could add a getter to MyClass
:
public class MyClass {
private int x;
public void increment() {
++x;
}
public int getX() {
return x;
}
}
Invoking Write Tests
again would create a complete test now.
Disabling the creation of partial tests
This feature is available by default. In order to switch this feature off, under File -> Settings
(Windows/Linux) or IntelliJ IDEA -> Preferences
(macOS), select Diffblue Cover
, then select the Test Creation
tab of the Diffblue Cover configuration screen, and in the Partial Test Creation
section, uncheck the boxes for the relevant Allow writing tests ...
options. This will disable the creation of partial tests unless no other tests could be created. If no other tests could be created when selecting or
Write Tests
then Diffblue Cover will create a skeleton test with simple inputs to get you started.