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.

Sentry blog image

The countdown to March 31 is on.

Make the switch from app center suck less with Sentry.

Read more

Top comments (0)

Billboard image

Imagine monitoring that's actually built for developers

Join Vercel, CrowdStrike, and thousands of other teams that trust Checkly to streamline monitor creation and configuration with Monitoring as Code.

Start Monitoring

👋 Kindness is contagious

Engage with a sea of insights in this enlightening article, highly esteemed within the encouraging DEV Community. Programmers of every skill level are invited to participate and enrich our shared knowledge.

A simple "thank you" can uplift someone's spirits. Express your appreciation in the comments section!

On DEV, sharing knowledge smooths our journey and strengthens our community bonds. Found this useful? A brief thank you to the author can mean a lot.

Okay