Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Enhancing Test Case Granularity for testGetLocalDateTimeTypes #2360

Closed

Conversation

Codegass
Copy link
Contributor

Description

As a newcomer to the mssql-jdbc community, I've been exploring the test suite and noticed an opportunity for minor improvement in the testGetLocalDateTimeTypes test case. Currently, this test case covers two distinct scenarios related to handling DATETIMEOFFSET conversions: one with the default behavior and another where the offset is ignored. I propose splitting this into two separate test cases to enhance test granularity and clarity.

Splitting the test allows each case to focus on a unique behavior, making it easier to pinpoint issues when one scenario fails without impacting the other. This approach not only aids in more precise problem identification across different scenarios but also reduces individual test execution time, which can be beneficial when debugging and resolving bugs.

Key Points

  • Split testGetLocalDateTimeTypes into Two Separate Tests: Create distinct test cases for the default conversion behavior and the behavior when ignoring time zone offsets.
  • Improve Test Clarity and Focus: Each test will focus on a specific conversion scenario, enhancing the ability to diagnose and address issues in targeted areas of the codebase.
  • Reduce Single Test Execution Time: By isolating the scenarios, each test's runtime is minimized, making the process of running tests more efficient during bug fixes and development.

I hope these changes will make our testing suite more robust and user-friendly. I'm open to discussion and feedback on this proposal, as I'm eager to learn from the community and contribute positively.

@Codegass
Copy link
Contributor Author

@microsoft-github-policy-service agree

Copy link

codecov bot commented Mar 21, 2024

Codecov Report

Attention: Patch coverage is 67.02703% with 61 lines in your changes are missing coverage. Please review.

Project coverage is 50.25%. Comparing base (9a8849b) to head (f0be3ef).
Report is 23 commits behind head on main.

❗ Current head f0be3ef differs from pull request most recent head 93e95d8. Consider uploading reports for the commit 93e95d8 to get more accurate results

Files Patch % Lines
...a/com/microsoft/sqlserver/jdbc/SQLServerError.java 32.14% 17 Missing and 2 partials ⚠️
...microsoft/sqlserver/jdbc/SQLServerInfoMessage.java 44.44% 14 Missing and 1 partial ⚠️
...m/microsoft/sqlserver/jdbc/SQLServerException.java 64.28% 5 Missing ⚠️
...in/java/com/microsoft/sqlserver/jdbc/IOBuffer.java 50.00% 3 Missing and 1 partial ⚠️
...oft/sqlserver/jdbc/SQLServerBulkCSVFileRecord.java 80.00% 3 Missing and 1 partial ⚠️
.../microsoft/sqlserver/jdbc/SQLServerConnection.java 84.00% 3 Missing and 1 partial ⚠️
...m/microsoft/sqlserver/jdbc/SQLServerStatement.java 73.33% 2 Missing and 2 partials ⚠️
...rc/main/java/com/microsoft/sqlserver/jdbc/dtv.java 33.33% 1 Missing and 1 partial ⚠️
...t/sqlserver/jdbc/SQLServerConnectionPoolProxy.java 50.00% 1 Missing ⚠️
...oft/sqlserver/jdbc/SQLServerPreparedStatement.java 87.50% 0 Missing and 1 partial ⚠️
... and 2 more
Additional details and impacted files
@@             Coverage Diff              @@
##               main    #2360      +/-   ##
============================================
+ Coverage     50.03%   50.25%   +0.22%     
- Complexity     3785     3863      +78     
============================================
  Files           143      145       +2     
  Lines         33204    33360     +156     
  Branches       5629     5654      +25     
============================================
+ Hits          16613    16766     +153     
- Misses        14207    14218      +11     
+ Partials       2384     2376       -8     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

private LocalDateTime convertOffsetDateTimeToLocalDateTime(OffsetDateTime value) {
return value.atZoneSameInstant(ZoneId.systemDefault()).toLocalDateTime();
}

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not opposed to splitting the tests but refactoring into these methods seem unnecessary since they are only called once, why not just include them in the tests themselves?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the feedback! The decision to refactor was driven by enhancing test readability and making future maintenance easier. This approach will improve the clarity of our test cases and reduces debugging rerun time when debugging for specific scenario. When tests are more granular and focused, identifying and addressing issues becomes faster, leading to more efficient debugging cycles.

Even though the methods are called only once now, this structure allows us to easily expand or modify tests with minimal changes. The reduction in debugging rerun time and the enhancement in clarity are pivotal, as they ensure that our test suite remains robust, facilitating quicker modifications.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think it makes it any easier to read. If this changes in the future it can be changed then for now there is no need to do unnecessary refactoring and extra method calls

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for suggestion! Your perspective on the overall development picture is very helpful. I agree that maintainability should be balanced with immediate clarity. Let's keep the tests straightforward as you've advised.

Jeffery-Wasty
Jeffery-Wasty previously approved these changes Apr 8, 2024
@Jeffery-Wasty
Copy link
Contributor

Hi @Codegass,

We're closing this because of reasons explained above by @lilgreenbird. Additionally, separating tests can lead to an increased test time, and this is not something we want.

Please feel free to comment below if you have any additional questions or concerns about your pull request.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: Closed/Merged PRs
Development

Successfully merging this pull request may close these issues.

4 participants