René's URL Explorer Experiment


Title: Disable NPE checks for non-public library fields · Issue #358 · UnitTestBot/UTBotJava · GitHub

Open Graph Title: Disable NPE checks for non-public library fields · Issue #358 · UnitTestBot/UTBotJava

X Title: Disable NPE checks for non-public library fields · Issue #358 · UnitTestBot/UTBotJava

Description: Description For now, the engine considers method invocations or field access on null values as producing NullPointerException. Previously in #226 such NPE checks were disabled for final fields from library classes because it often leads ...

Open Graph Description: Description For now, the engine considers method invocations or field access on null values as producing NullPointerException. Previously in #226 such NPE checks were disabled for final fields from...

X Description: Description For now, the engine considers method invocations or field access on null values as producing NullPointerException. Previously in #226 such NPE checks were disabled for final fields from...

Opengraph URL: https://github.com/UnitTestBot/UTBotJava/issues/358

X: @github

direct link

Domain: github.com


Hey, it has json ld scripts:
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"Disable NPE checks for non-public library fields","articleBody":"**Description**\r\n\r\nFor now, the engine considers method invocations or field access on null values as producing `NullPointerException`. Previously in #226 such NPE checks were disabled for final fields from library classes because it often leads to the generation of tests with exceptions that are unexpected for a user with high usage of Java reflection. It is suggested to extend such a strategy to non-public fields from library classes too, for the same reasons.\r\n\r\n**Expected behavior**\r\n\r\nConsider generating tests for such a method:\r\n```java\r\npublic class DateExample {\r\n    boolean foo(Date date) {\r\n        return date.getTime() == 100;\r\n    }\r\n}\r\n```\r\n\r\nOnly such 3 tests are expected by user:\r\n```java\r\n@Test\r\n@DisplayName(\"foo: return date.getTime() == 100 : False -\u003e return date.getTime() == 100\")\r\npublic void testFoo_DateGetTimeNotEquals100() {\r\n    DateExample dateExample = new DateExample();\r\n    Date date = new Date(-155L);\r\n\r\n    boolean actual = dateExample.foo(date);\r\n\r\n    assertFalse(actual);\r\n}\r\n\r\n@Test\r\n@DisplayName(\"foo: return date.getTime() == 100 : True -\u003e return date.getTime() == 100\")\r\npublic void testFoo_DateGetTimeEquals100() {\r\n    DateExample dateExample = new DateExample();\r\n    Date date = new Date(100L);\r\n\r\n    boolean actual = dateExample.foo(date);\r\n\r\n    assertTrue(actual);\r\n}\r\n\r\n@Test\r\n@DisplayName(\"foo: return date.getTime() == 100 : True -\u003e ThrowNullPointerException\")\r\npublic void testFoo_DateGetTime() {\r\n    DateExample dateExample = new DateExample();\r\n\r\n    assertThrows(NullPointerException.class, () -\u003e dateExample.foo(null));\r\n}\r\n```\r\n\r\nBut for now, UtBot also generates at least 2 such tests:\r\n```java\r\n@Test\r\n@DisplayName(\"foo: return date.getTime() == 100 : True -\u003e ThrowNullPointerException\")\r\npublic void testFoo_ThrowNullPointerException() throws Exception {\r\n    DateExample dateExample = new DateExample();\r\n    Date date = ((Date) createInstance(\"java.util.Date\"));\r\n    Object immutableGregorianDate = createInstance(\"sun.util.calendar.ImmutableGregorianDate\");\r\n    setField(immutableGregorianDate, \"date\", null);\r\n    setField(date, \"cdate\", immutableGregorianDate);\r\n\r\n    assertThrows(NullPointerException.class, () -\u003e dateExample.foo(date));\r\n}\r\n\r\n@Test\r\n@DisplayName(\"foo: return date.getTime() == 100 : True -\u003e ThrowNullPointerException\")\r\npublic void testFoo_ThrowNullPointerException_1() throws ClassNotFoundException, Exception {\r\n    Class dateClazz = Class.forName(\"java.util.Date\");\r\n    BaseCalendar prevGcal = ((BaseCalendar) getStaticFieldValue(dateClazz, \"gcal\"));\r\n    BaseCalendar prevJcal = ((BaseCalendar) getStaticFieldValue(dateClazz, \"jcal\"));\r\n    try {\r\n        setStaticField(dateClazz, \"gcal\", null);\r\n        setStaticField(dateClazz, \"jcal\", null);\r\n        DateExample dateExample = new DateExample();\r\n        Date date = ((Date) createInstance(\"java.util.Date\"));\r\n        Object immutableGregorianDate = createInstance(\"sun.util.calendar.ImmutableGregorianDate\");\r\n        LocalGregorianCalendar.Date date1 = ((LocalGregorianCalendar.Date) createInstance(\"sun.util.calendar.LocalGregorianCalendar$Date\"));\r\n        setField(date1, \"zoneinfo\", null);\r\n        setField(date1, \"normalized\", false);\r\n        setField(date1, \"millis\", 0);\r\n        setField(date1, \"seconds\", 0);\r\n        setField(date1, \"minutes\", 0);\r\n        setField(date1, \"hours\", 0);\r\n        setField(date1, \"dayOfMonth\", 0);\r\n        setField(date1, \"month\", 0);\r\n        setField(date1, \"gregorianYear\", 11564545);\r\n        setField(immutableGregorianDate, \"date\", date1);\r\n        setField(date, \"cdate\", immutableGregorianDate);\r\n\r\n        dateExample.foo(date);\r\n    } finally {\r\n        setStaticField(Date.class, \"gcal\", prevGcal);\r\n        setStaticField(Date.class, \"jcal\", prevJcal);\r\n    }\r\n}\r\n```\r\n\r\nThese tests SHOULD NOT be generated (in the plugin, at least).\r\n\r\n**Environment**\r\n\r\nNo mocks, Java.\r\n\r\n**Potential alternatives**\r\n\r\nUnknown.\r\n\r\n**Context**\r\n\r\nWe can possibly lose some branches with such disabling.\r\n","author":{"url":"https://github.com/Damtev","@type":"Person","name":"Damtev"},"datePublished":"2022-06-30T10:05:36.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":1},"url":"https://github.com/358/UTBotJava/issues/358"}

route-pattern/_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format)
route-controllervoltron_issues_fragments
route-actionissue_layout
fetch-noncev2:11eeda8b-74bb-fe13-ce27-5f582664a04b
current-catalog-service-hash81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114
request-idA86C:146116:9A8FC:D66B6:698E0619
html-safe-nonceba90979f455ba733b5ee003e7142e4f1b7d56d893ceb5412197ae7234ea70e69
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJBODZDOjE0NjExNjo5QThGQzpENjZCNjo2OThFMDYxOSIsInZpc2l0b3JfaWQiOiIyODAyNjA5MTQ2MTY3MTY2NDg5IiwicmVnaW9uX2VkZ2UiOiJpYWQiLCJyZWdpb25fcmVuZGVyIjoiaWFkIn0=
visitor-hmac44d9235a17d37713da5839e7cf4b132bc64713815df09d5ce4aa12f0773d176d
hovercard-subject-tagissue:1289901101
github-keyboard-shortcutsrepository,issues,copilot
google-site-verificationApib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I
octolytics-urlhttps://collector.github.com/github/collect
analytics-location///voltron/issues_fragments/issue_layout
fb:app_id1401488693436528
apple-itunes-appapp-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/UnitTestBot/UTBotJava/358/issue_layout
twitter:imagehttps://opengraph.githubassets.com/1d12a496109a614bf593054841d951cbe7bad83eeed8523cfafd8754abc2541f/UnitTestBot/UTBotJava/issues/358
twitter:cardsummary_large_image
og:imagehttps://opengraph.githubassets.com/1d12a496109a614bf593054841d951cbe7bad83eeed8523cfafd8754abc2541f/UnitTestBot/UTBotJava/issues/358
og:image:altDescription For now, the engine considers method invocations or field access on null values as producing NullPointerException. Previously in #226 such NPE checks were disabled for final fields from...
og:image:width1200
og:image:height600
og:site_nameGitHub
og:typeobject
og:author:usernameDamtev
hostnamegithub.com
expected-hostnamegithub.com
None70a88bfe6d9639434ae7f5a46d15c336b8884978a51526bc55fc57d848f1e3c1
turbo-cache-controlno-preview
go-importgithub.com/UnitTestBot/UTBotJava git https://github.com/UnitTestBot/UTBotJava.git
octolytics-dimension-user_id87413538
octolytics-dimension-user_loginUnitTestBot
octolytics-dimension-repository_id480810501
octolytics-dimension-repository_nwoUnitTestBot/UTBotJava
octolytics-dimension-repository_publictrue
octolytics-dimension-repository_is_forkfalse
octolytics-dimension-repository_network_root_id480810501
octolytics-dimension-repository_network_root_nwoUnitTestBot/UTBotJava
turbo-body-classeslogged-out env-production page-responsive
disable-turbofalse
browser-stats-urlhttps://api.github.com/_private/browser/stats
browser-errors-urlhttps://api.github.com/_private/browser/errors
release2519b16db5550494a653f9a8837c14ef7df80804
ui-targetcanary-1
theme-color#1e2327
color-schemelight dark

Links:

Skip to contenthttps://github.com/UnitTestBot/UTBotJava/issues/358#start-of-content
https://github.com/
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2FUnitTestBot%2FUTBotJava%2Fissues%2F358
GitHub CopilotWrite better code with AIhttps://github.com/features/copilot
GitHub SparkBuild and deploy intelligent appshttps://github.com/features/spark
GitHub ModelsManage and compare promptshttps://github.com/features/models
MCP RegistryNewIntegrate external toolshttps://github.com/mcp
ActionsAutomate any workflowhttps://github.com/features/actions
CodespacesInstant dev environmentshttps://github.com/features/codespaces
IssuesPlan and track workhttps://github.com/features/issues
Code ReviewManage code changeshttps://github.com/features/code-review
GitHub Advanced SecurityFind and fix vulnerabilitieshttps://github.com/security/advanced-security
Code securitySecure your code as you buildhttps://github.com/security/advanced-security/code-security
Secret protectionStop leaks before they starthttps://github.com/security/advanced-security/secret-protection
Why GitHubhttps://github.com/why-github
Documentationhttps://docs.github.com
Bloghttps://github.blog
Changeloghttps://github.blog/changelog
Marketplacehttps://github.com/marketplace
View all featureshttps://github.com/features
Enterpriseshttps://github.com/enterprise
Small and medium teamshttps://github.com/team
Startupshttps://github.com/enterprise/startups
Nonprofitshttps://github.com/solutions/industry/nonprofits
App Modernizationhttps://github.com/solutions/use-case/app-modernization
DevSecOpshttps://github.com/solutions/use-case/devsecops
DevOpshttps://github.com/solutions/use-case/devops
CI/CDhttps://github.com/solutions/use-case/ci-cd
View all use caseshttps://github.com/solutions/use-case
Healthcarehttps://github.com/solutions/industry/healthcare
Financial serviceshttps://github.com/solutions/industry/financial-services
Manufacturinghttps://github.com/solutions/industry/manufacturing
Governmenthttps://github.com/solutions/industry/government
View all industrieshttps://github.com/solutions/industry
View all solutionshttps://github.com/solutions
AIhttps://github.com/resources/articles?topic=ai
Software Developmenthttps://github.com/resources/articles?topic=software-development
DevOpshttps://github.com/resources/articles?topic=devops
Securityhttps://github.com/resources/articles?topic=security
View all topicshttps://github.com/resources/articles
Customer storieshttps://github.com/customer-stories
Events & webinarshttps://github.com/resources/events
Ebooks & reportshttps://github.com/resources/whitepapers
Business insightshttps://github.com/solutions/executive-insights
GitHub Skillshttps://skills.github.com
Documentationhttps://docs.github.com
Customer supporthttps://support.github.com
Community forumhttps://github.com/orgs/community/discussions
Trust centerhttps://github.com/trust-center
Partnershttps://github.com/partners
GitHub SponsorsFund open source developershttps://github.com/sponsors
Security Labhttps://securitylab.github.com
Maintainer Communityhttps://maintainers.github.com
Acceleratorhttps://github.com/accelerator
Archive Programhttps://archiveprogram.github.com
Topicshttps://github.com/topics
Trendinghttps://github.com/trending
Collectionshttps://github.com/collections
Enterprise platformAI-powered developer platformhttps://github.com/enterprise
GitHub Advanced SecurityEnterprise-grade security featureshttps://github.com/security/advanced-security
Copilot for BusinessEnterprise-grade AI featureshttps://github.com/features/copilot/copilot-business
Premium SupportEnterprise-grade 24/7 supporthttps://github.com/premium-support
Pricinghttps://github.com/pricing
Search syntax tipshttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
documentationhttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2FUnitTestBot%2FUTBotJava%2Fissues%2F358
Sign up https://github.com/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fvoltron%2Fissues_fragments%2Fissue_layout&source=header-repo&source_repo=UnitTestBot%2FUTBotJava
Reloadhttps://github.com/UnitTestBot/UTBotJava/issues/358
Reloadhttps://github.com/UnitTestBot/UTBotJava/issues/358
Reloadhttps://github.com/UnitTestBot/UTBotJava/issues/358
UnitTestBot https://github.com/UnitTestBot
UTBotJavahttps://github.com/UnitTestBot/UTBotJava
Notifications https://github.com/login?return_to=%2FUnitTestBot%2FUTBotJava
Fork 45 https://github.com/login?return_to=%2FUnitTestBot%2FUTBotJava
Star 142 https://github.com/login?return_to=%2FUnitTestBot%2FUTBotJava
Code https://github.com/UnitTestBot/UTBotJava
Issues 386 https://github.com/UnitTestBot/UTBotJava/issues
Pull requests 33 https://github.com/UnitTestBot/UTBotJava/pulls
Discussions https://github.com/UnitTestBot/UTBotJava/discussions
Actions https://github.com/UnitTestBot/UTBotJava/actions
Projects 1 https://github.com/UnitTestBot/UTBotJava/projects
Wiki https://github.com/UnitTestBot/UTBotJava/wiki
Security 0 https://github.com/UnitTestBot/UTBotJava/security
Insights https://github.com/UnitTestBot/UTBotJava/pulse
Code https://github.com/UnitTestBot/UTBotJava
Issues https://github.com/UnitTestBot/UTBotJava/issues
Pull requests https://github.com/UnitTestBot/UTBotJava/pulls
Discussions https://github.com/UnitTestBot/UTBotJava/discussions
Actions https://github.com/UnitTestBot/UTBotJava/actions
Projects https://github.com/UnitTestBot/UTBotJava/projects
Wiki https://github.com/UnitTestBot/UTBotJava/wiki
Security https://github.com/UnitTestBot/UTBotJava/security
Insights https://github.com/UnitTestBot/UTBotJava/pulse
New issuehttps://github.com/login?return_to=https://github.com/UnitTestBot/UTBotJava/issues/358
New issuehttps://github.com/login?return_to=https://github.com/UnitTestBot/UTBotJava/issues/358
#353https://github.com/UnitTestBot/UTBotJava/pull/353
Disable NPE checks for non-public library fieldshttps://github.com/UnitTestBot/UTBotJava/issues/358#top
#353https://github.com/UnitTestBot/UTBotJava/pull/353
https://github.com/Damtev
comp-symbolic-engineIssue is related to the symbolic execution enginehttps://github.com/UnitTestBot/UTBotJava/issues?q=state%3Aopen%20label%3A%22comp-symbolic-engine%22
https://github.com/Damtev
https://github.com/Damtev
Damtevhttps://github.com/Damtev
on Jun 30, 2022https://github.com/UnitTestBot/UTBotJava/issues/358#issue-1289901101
#226https://github.com/UnitTestBot/UTBotJava/issues/226
Damtevhttps://github.com/Damtev
comp-symbolic-engineIssue is related to the symbolic execution enginehttps://github.com/UnitTestBot/UTBotJava/issues?q=state%3Aopen%20label%3A%22comp-symbolic-engine%22
UTBot Javahttps://github.com/orgs/UnitTestBot/projects/2
https://github.com
Termshttps://docs.github.com/site-policy/github-terms/github-terms-of-service
Privacyhttps://docs.github.com/site-policy/privacy-policies/github-privacy-statement
Securityhttps://github.com/security
Statushttps://www.githubstatus.com/
Communityhttps://github.community/
Docshttps://docs.github.com/
Contacthttps://support.github.com?tags=dotcom-footer

Viewport: width=device-width


URLs of crawlers that visited me.