簡體   English   中英

Spock中的運行時異常模擬groovy.sql

[英]Runtime Exception Mocking groovy.sql in Spock

我在StackOverflow和Google周圍搜尋了一段時間,試圖找到能夠在Spock規范中運行此代碼的正確配置/語法:

Sql mockSql = Mock()

但是,當我運行單元測試時,CGLIB拋出了一個令人討厭的異常:

java.lang.IllegalAccessError: tried to access method groovy.sql.Sql.<init>()V from class groovy.sql.Sql$$EnhancerByCGLIB$$d0b7cd7f
at org.spockframework.mock.runtime.MockInstantiator.instantiate(MockInstantiator.java:33)
at org.spockframework.mock.runtime.ProxyBasedMockFactory$CglibMockFactory.createMock(ProxyBasedMockFactory.java:92)
at org.spockframework.mock.runtime.ProxyBasedMockFactory.create(ProxyBasedMockFactory.java:49)
at org.spockframework.mock.runtime.JavaMockFactory.create(JavaMockFactory.java:51)
at org.spockframework.mock.runtime.CompositeMockFactory.create(CompositeMockFactory.java:44)
at org.spockframework.lang.SpecInternals.createMock(SpecInternals.java:47)
at org.spockframework.lang.SpecInternals.createMockImpl(SpecInternals.java:282)
at org.spockframework.lang.SpecInternals.MockImpl(SpecInternals.java:83)

我看了這個問題/答案- 使用GroovyMock或Spock中的類似方法模擬靜態方法 -希望它可以為我提供一個很好的起點,但是在我的情況下,該類被嘲笑為groovy.Sql是一個groovy類,所以我不是確保這是正確的起點。

我已經使用GroovyMock在其他單元測試中成功測試了Groovy.Sql,但是我希望也許我只是錯過了可以做到的東西,這樣我才能讓Spock magic和Groovy SQL一起開心。 如果我只是在某個地方錯過了答案,我深表歉意-希望我不會重復別人的詢問。

當使用Spock模擬類(而不是接口)時,建議將objenesis-1.2或更高版本放在測試運行時類路徑上(除了CGLIB之外)。 否則,Spock將無法避免執行要模擬的類的構造函數,這可能會產生不良后果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM