> For the complete documentation index, see [llms.txt](https://cover-docs.diffblue.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://cover-docs.diffblue.com/updates-and-upgrades/release-archive/2022-07-01.md).

# 2022-07-01

## Tests for Spring Controllers with session attributes

Diffblue Cover now writes tests for Spring Controllers with session attributes, for both the CLI and the IntelliJ plugin. For example:

```

@ContextConfiguration(classes = {MyController.class})

@ExtendWith(SpringExtension.class)

class MyControllerDiffblueTest {
  @Autowired
  private MyController myController;

  @MockBean
  private Plain plain;
  /**
   * Method under test: {@link MyController#doSomethingOnBeanField(List)}
   */
  @Test
  void testDoSomethingOnBeanField() throws Exception {
    // Arrange
    when(plain.doSomething()).thenReturn("Do Something");
    MockHttpServletRequestBuilder getResult = MockMvcRequestBuilders.get("/do-plain");
    MockHttpServletRequestBuilder requestBuilder = getResult.sessionAttr("bandersnatch", new ArrayList<>());

    // Act and Assert
    MockMvcBuilders.standaloneSetup(myController)
        .build()
        .perform(requestBuilder)
        .andExpect(MockMvcResultMatchers.status().isOk())
        .andExpect(MockMvcResultMatchers.content().contentType("text/plain;charset=ISO-8859-1"))
        .andExpect(MockMvcResultMatchers.content().string("Do Something"));
  }
```

## Tests for classes implementing the Builder pattern

Diffblue Cover now recognises that `build` is a **builder method**, i.e. it creates a new object using the fields of the class to call a constructor and returns the result. This means that we can now write tests by calling the `build` method and asserting on its result.

## Coming soon!

We are busy getting ready for IntelliJ 2022.2! More details when the new IntelliJ release is announced, please watch this space.

## Developer Edition trial available

We are delighted to now offer a 14-day trial version of our Developer Edition, which includes the Diffblue Cover CLI, as part of our new licensing option. We're really excited that you can now "try before you buy"! To download your trial of Diffblue Cover Developer Edition, please [click here](https://www.diffblue.com/try-cover?cover_plan_selected=Developer). Full information on all our options is also available [here](https://diffblue.com/pricing).

## How do I automatically maintain all of these tests?

![](https://info.diffblue.com/hubfs/PluginPopup/ci-workflow.gif)

Use Diffblue Cover on any CI platform to automatically update your unit tests and catch regressions for every commit - watch [this video](https://www.diffblue.com/video-demo/?utm_source=Plugin\&utm_medium=Whatsnew\&utm_campaign=WhatsNewBox) to learn more.

## Enhancements

* CLI: Cover now detects testable methods faster. \[Ref: TG-17337]
* Cover now always includes `MethodGroup` failure reasons, if present, in the log file. \[Ref: TG-17121]
* Cover now provides improved guidance when an `R012` (JNI sandbox policy violation) has been encountered. \[Ref: TG-17100]
* Cover now sets `@SessionAttributes` for Spring Controller tests when appropriate. \[Ref: TG-17070]
* Cover is now able to write tests for classes implementing the `Builder` pattern. \[Ref: TG-13577]

## Resolved Issues

* CLI: Resolved an issue which caused Cover to reject prefixes which end in a Java keyword. \[Ref: TG-17358]

## Known Issues

* CLI: The command `dcover clean --failing` does not work on Gradle projects. This command is now deprecated and `dcover validate` should be used instead. \[Ref: TG-11707]
* For multi-module projects, `--coverage-reports` needs to be run in the sub-modules, not from root module with `--working-directory`. \[Ref: TG-16876]
