ObjectBox ToOne对象仅在Android本地单元测试中的实体内为空

ObjectBox ToOne对象仅在Android本地单元测试中的实体内为空,android,one-to-one,objectbox,Android,One To One,Objectbox,我正在尝试为我的一个存储库编写测试,但由于以下错误,我无法保存实体对象: java.lang.IllegalStateException: ToOne object is null inside br.com.CalendarEvent 我的实体是以下两个: @Entity data class CalendarEvent( @Id var boxId: Long = 0, @Index var id: String = UUID.randomUUID().toString(

我正在尝试为我的一个存储库编写测试,但由于以下错误,我无法保存实体对象:

java.lang.IllegalStateException: ToOne object is null inside br.com.CalendarEvent
我的实体是以下两个:

@Entity
data class CalendarEvent(
    @Id var boxId: Long = 0,

    @Index var id: String = UUID.randomUUID().toString(),

    var userId: String = "",

    var title: String = "",

    var discipline: String = "",

    var hour: Int = 1,

    var dateInEpochDay: Long = 0L,

    var isOnline: Boolean = false,

    var estimatedTime: Int = 1,

    var userAttended: Boolean? = null) {

    lateinit var nucleus: ToOne<SupportNucleus>

    lateinit var specialNeeds: ToMany<SpecialNeed>

}
@Entity
data class SupportNucleus(
@Id var boxId: Long = 0,

@Index var id: String = UUID.randomUUID().toString(),

var name: String = "",

var location: String = "",

var contact: String = "",

var phones: String = "",

var startWorkingHour: Int = 9,

var endWorkingHour: Int = 23,

@Transient var unavailableDays: List<Long> = listOf())

该错误实际上发生在我试图在保存后提取以断言它已正确保存时。顺便说一句,请尝试从
ToOne
中删除
lateinit
,并立即初始化它:

@Entity
data class CalendarEvent(
...
    ) {

    var nucleus = ToOne<SupportNucleus>(this, CalendarEvent_.nucleus)

}
@实体
数据类日历事件(
...
) {
var nucleus=ToOne(这是CalendarEvent.nucleus)
}
注意:Android项目不再需要ToOne/ToMany初始化,因为当从Android Studio运行测试或直接运行Gradle任务时,ObjectBox 1.5或更新版本不再需要,例如,
testDebugUnitTest


检查诸如
objectboxTransformDebugUnitTest
之类的Gradle任务是否在测试任务(默认设置为)之前运行。

您看到了吗?是的,这就是为什么我添加了以下行:calendar.nucleus=ToOne(calendar,CalendarEvent\uuuuuz.nucleus)calendar.nucleus.target=nucleus我遗漏了什么吗?谢谢,工作得很有魅力!我建议在ObjectBox的“关系”页面上也更改为此,我还应该补充一点,现在控制台中显示一个警告:CalendarEvent构造函数初始化关系字段“nucleus”,这可能会破坏ObjectBox关系。我应该担心吗?这个警告很有趣。这意味着字节码转换器实际上正在运行,并检测到ToOne已经被初始化。在这种情况下,可以安全地忽略,因为这是故意的。您是否可以共享一个最小的示例项目,以便我们检查transformer为什么不注入ToOne初始化?
@Entity
data class CalendarEvent(
...
    ) {

    var nucleus = ToOne<SupportNucleus>(this, CalendarEvent_.nucleus)

}