DEV Community

Cover image for Tests with time
Kiolk
Kiolk

Posted on

Tests with time

I encountered the issue when my tests passed locally, but some of them failed on CI. Initially, I thought it was a problem with incorrect configuration of the running task or pipeline environment. I tried several solutions, but none worked. Surprisingly, it was only after that I decided to check which tests had failed. The issue was clear: it was related to time.
Failed tests
These tests cover the logic of parsing a string into LocalDateTime.  Parsing involves local time, which requires information about the time zone. I get this information from a static method that returns the time zone of the running environment: TimeZone.currentSystemDefault(). In tests, I use a string with a specific time and assert against a time related to my time zone. As a result, the tests passed on my local machine but failed on the CI machine, which operates in a different time zone. 

The solution was obvious: I need to provide a specific time zone for the tests to make them independent of the environment. To achieve this, I needed to extract the logic of obtaining time zone information as a dependency, allowing it to be configured for tests.

fun Any.parsToLocalDateTime(timeZone: TimeZone = TimeZone.currentSystemDefault()): LocalDateTime? {
Enter fullscreen mode Exit fullscreen mode

You can find more useful content on my LinkedIn page, on X, in Medium or Mastodon.

Do your career a favor. Join DEV. (The website you're on right now)

It takes one minute and it's free.

Get started

Top comments (0)

Heroku

Build apps, not infrastructure.

Dealing with servers, hardware, and infrastructure can take up your valuable time. Discover the benefits of Heroku, the PaaS of choice for developers since 2007.

Visit Site

πŸ‘‹ Kindness is contagious

Explore a sea of insights with this enlightening post, highly esteemed within the nurturing DEV Community. Coders of all stripes are invited to participate and contribute to our shared knowledge.

Expressing gratitude with a simple "thank you" can make a big impact. Leave your thanks in the comments!

On DEV, exchanging ideas smooths our way and strengthens our community bonds. Found this useful? A quick note of thanks to the author can mean a lot.

Okay