🔧 Tests with time
Nachrichtenbereich: 🔧 Programmierung
🔗 Quelle: dev.to
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.
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? {
You can find more useful content on my LinkedIn page, on X, in Medium or Mastodon.
...
🔧 Tests with time
📈 13.67 Punkte
🔧 Programmierung
🔧 How to save time when run RSpec tests
📈 13.67 Punkte
🔧 Programmierung
🐧 Time Formatting in Go (Time to String)
📈 10.21 Punkte
🐧 Linux Tipps
📰 Real-Time Payments, Real-Time Fraud Risks?
📈 10.21 Punkte
📰 IT Security