Skip to content

Conversation

Copy link

Copilot AI commented Dec 24, 2025

java.sql.Date lacks a no-arg constructor, causing InstantiationException when mocking beans with such fields:

Caused by: java.lang.InstantiationException: java.sql.Date
	at java.lang.Class.newInstance(Class.java:427)
	at com.github.jsonzou.jmockdata.mocker.BeanMocker.mock(BeanMocker.java:36)
Caused by: java.lang.NoSuchMethodException: java.sql.Date.<init>()

Changes

  • SqlDateMocker: New mocker delegates to DateMocker and converts via new java.sql.Date(date.getTime())
  • MockConfig: Register SqlDateMocker for java.sql.Date.class, following TimestampMocker pattern
  • Tests: SqlDateBean with single field, array, and List; testSqlDateMock() validates direct and bean-field mocking

Usage

// Direct mocking now works
java.sql.Date date = JMockData.mock(java.sql.Date.class);

// Bean fields with java.sql.Date are properly instantiated
class Entity {
    private java.sql.Date createdDate;
}
Entity entity = JMockData.mock(Entity.class);  // No longer throws
Original prompt

This section details on the original issue you should resolve

<issue_title>不支持java.sql.Date类型字段实例化</issue_title>
<issue_description>```
...
Caused by: com.github.jsonzou.jmockdata.MockException: java.lang.InstantiationException: java.sql.Date
at com.github.jsonzou.jmockdata.mocker.BeanMocker.mock(BeanMocker.java:47)
at com.github.jsonzou.jmockdata.mocker.ClassMocker.mock(ClassMocker.java:38)
at com.github.jsonzou.jmockdata.mocker.BaseMocker.mock(BaseMocker.java:35)
at com.github.jsonzou.jmockdata.mocker.BeanMocker.setFieldValueByFieldAccessible(BeanMocker.java:67)
at com.github.jsonzou.jmockdata.mocker.BeanMocker.mock(BeanMocker.java:44)
... 37 more
Caused by: java.lang.InstantiationException: java.sql.Date
at java.lang.Class.newInstance(Class.java:427)
at com.github.jsonzou.jmockdata.mocker.BeanMocker.mock(BeanMocker.java:36)
... 41 more
Caused by: java.lang.NoSuchMethodException: java.sql.Date.()
at java.lang.Class.getConstructor0(Class.java:3082)
at java.lang.Class.newInstance(Class.java:412)
... 42 more


## Comments on the Issue (you are @copilot in this section)

<comments>
</comments>


✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.

- Created SqlDateMocker similar to TimestampMocker
- Registered SqlDateMocker in MockConfig for java.sql.Date class
- Added SqlDateBean test class with various java.sql.Date fields
- Added testSqlDateMock test to verify direct and bean field mocking
- All tests pass (except pre-existing failing testMockConfig)

Co-authored-by: huayanYu <[email protected]>
Copilot AI changed the title [WIP] Fix instantiation issue for java.sql.Date fields Add support for java.sql.Date instantiation Dec 24, 2025
Copilot AI requested a review from huayanYu December 24, 2025 10:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

不支持java.sql.Date类型字段实例化

2 participants