내가 코 틀린 실제로 무엇을하고 있는지 이해하는 데 문제가 있어요 덮어 쓰기 :코 틀린 : 슈퍼 생성자에서 변경이
내 단위 테스트는 다음과 같습니다:
내 파서가이abstract class EnvelopeParser(val xml: String) {
abstract fun parseResponse(response: Element)
init {
parseResponse(xmlFromString(xml))
}
// non-related stuff
}
과 같은
@Test
fun testReadCursorRequest() {
val xml = fromFile()
val parser: ReadCursorRequestParser = ReadCursorRequestParser(xml)
assertEquals(0, parser.status)
assertEquals(134, parser.contacts!!.size)
}
class ReadCursorRequestParser(xml: String) : EnvelopeParser(xml) {
var contacts: List<AddressBookElementParser> = mutableListOf()
override fun parseResponse(response: Element) {
// here some parsing stuff, fills the contacts-list
println("size is: ${contacts.size}")
}
}
println은 size is: 134
라고 말하면 단위 테스트 결과는 java.lang.AssertionError: Expected <134>, actual <0>
입니다.
왜?
구문 분석 작업 내에서'contacts'라는 로컬 변수가 있습니까? 만약 있다면, 속성에 저장된'contacts'의 크기가 아닌 크기가 출력됩니다. – hotkey
또한, 당신의 테스트는'parseResponse()'를 호출하는 것 같지 않습니다. 그걸 어디에서 부르니? – hotkey
이 항목에서 건너 뛰었던 항목으로 인해 이것이 분명하지 않은 경우 유감스럽게 생각합니다. 가능한 한 짧고 상황에 맞는 내용을 유지하려고했습니다. EnvelopeParser는 실제로 생성자에서 parseResponse를 호출합니다. 실제로 디버깅 모드에서 중단 점을 실행하므로 로컬 변수 연락처가 100 % 확실하며 IntelliJ는 println에서 중단 될 때 연락처 멤버의 값을 렌더링합니다. –