You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Java fuzzer can't create any values for types with no public constructor (e.g. LocalDateTime) #2437
When creating instances of arbitrary classes Java fuzzer only considers their accessible constructors. However, some classes (e.g. LocalDateTime) only have private constructors while their instances are meant to be created using static methods.
@Test
fun`fuzzer can create instances of classes without public constructors but with static factory method in their class`() {
var seenLocalDateTime =false
runBlockingWithContext {
runJavaFuzzing(
TestIdentityPreservingIdGenerator,
methodUnderTest =LocalDateTime::getMinute.javaMethod!!.executableId,
constants = emptyList(),
names = emptyList(),
) { thisInstance, _, _ ->val control = runCatching {
ValueConstructor()
.construct(listOfNotNull(thisInstance?.model))
.singleOrNull()?.value
}.getOrNull()?.let { constructedThisInstance ->
assertInstanceOf(LocalDateTime::class.java, constructedThisInstance)
seenLocalDateTime =trueControl.STOP
} ?:Control.CONTINUEBaseFeedback(Trie.emptyNode(), control)
}
}
assertTrue(seenLocalDateTime) { "No value was generated for type LocalDateTime" }
}
Expected behavior
Test passes.
Actual behavior
Test fails.
Visual proofs (screenshots, logs, images)
No value was generated for type LocalDateTime ==> expected: <true> but was: <false>
@IlyaMuravjov
Could you please explain expected and actual behavior more in detail?
Here it is expected to use LocalDateTime static methods to instantiate it.
Activity
alisevych commentedon Jul 24, 2023
@IlyaMuravjov
Could you please explain expected and actual behavior more in detail?
Here it is expected to use LocalDateTime static methods to instantiate it.