Assassin’s Creed Odyssey Review

Assassin’s Creed Odyssey is my first Assassin’s Creed ever. The first time I encountered Assassin’s Creed 1 I did not really like the concept. It felt weird to me that the actual interesting and cool gameplay was constantly interrupted by the modern-day stuff. It also did not help the game’s case that the German translation was atrocious. I had to revisit this series a few years later to get more interested. I did so by watching videos on YouTube where all cutscenes had been edited into one large video, effectively turning the game into a movie, sans the gameplay. Ultimately, I have come to like the presentation of the main stories. They are interesting enough and the cutscenes are of very high quality. As a result, I have seen about four or five of these “movies” and watched some gameplay of AC Origins. This really caught my attention and because Odyssey was supposed to be even more like an RPG, I snatched myself a copy once there was a good deal for it. But honestly, given the time I have spent with this game so far, the full price would have been warranted without question. I have finished the game including the DLCs, I am close to 200 hours and I think I am ready to share my thoughts.

Read More »

Mockito “when” vs. “verify”

Recently, during a code review at work there was a discussion about whether Mockito’s verify is necessary when when (or given, which is a synonym) is parameterized. The quick answer is "no".

Imagine this contrived example. I have two classes, Calculator and ComplexOperationService, where the latter requires the former. The goal is to write a unit test for ComplexOperationService and mock all usages of Calculator.

Here are the two classes.

public class Calculator {

    public int sum(final int a, final int b) {
        return a + b;
    }
}

@RequiredArgsConstructor
public class ComplexOperationService {
    
    private final Calculator calculator;

    public void doComplexOperation(final int a, final int b) {
        System.out.println(calculator.sum(a, b));
    }
}
Read More »