Anonymous
Unterschiede zwischen nicht passenden Zeichenfolgen mit AssertJ zeigen
Post
by Anonymous » 02 Apr 2025, 11:54
Ich arbeite derzeit an einem Unit -Test für eine Kotlin -Funktion, die eine CSV -Datei aus einigen Modelldaten generiert. Ich stoße auf einige seltsame Testausfälle und die Standardausgabe von Assertj hilft bei der Diagnose des Problems nicht viel. Nach dem, was ich beurteilen kann, wird der Fehler durch die Charakter -Codierung verursacht. Die "erwartete x erwartete x, aber y" sagt mir nichts, da X und Y die gleiche zu sein scheinen. Gibt es eine Möglichkeit, die Testausgabe zu erhalten, um genau anzuzeigen, welche Zeichen nicht in den Zeichenfolgen übereinstimmen?
Code: Select all
internal fun List.buildCsv(dp: INT293DependencyProvider):File
{
val file = File("/tmp/${dp.outputFileName}.csv")
file.bufferedWriter(Charsets.ISO_8859_1).use { out ->
out.write(RaveOutput.HEADER)
this.forEach {
out.write(it.toCsvRow())
}
}
return file
}
@Test
fun `Test generate csv from contacts`()
{
mockContext(300).value().let { context ->
testInt293DependencyProvider(context).let { dp ->
javaClass.classLoader.getResourceAsStream("rave-contacts.csv").use { stream ->
val expected = IOUtils.toString(stream, Charsets.ISO_8859_1)
val contacts = listOf(
Contact("123456", "foo", "bar", "foo@bar.com", "5704445555", Type.EMPLOYEE, "fbar"),
Contact("654321", "john", "doe", "jdoe@bucknell.edu", "+15556667777", Type.STUDENT, "jdoe")
)
val output = contacts.buildCsv(dp)
val actual = IOUtils.toString(output.inputStream(), Charsets.ISO_8859_1)
assertNotNull(actual)
assertThat(actual).isEqualTo(expected)
}
}
}
}
[ERROR] Test.Test generate csv from contacts
expected:
"Unique Loader ID,Last Name,First Name,Registration Email Address,Email Address 2,Email Address 3,Site Username,Role,Mobile Phone 1,Mobile Phone 2,Mobile Phone 3,Mobile 1 Voice,Mobile 2 Voice,Mobile 3 Voice,Mobile Carrier 1,Mobile Carrier 2,Mobile Carrier 3,Landline Phone 1,Landline 1 Extension,Landline Phone 2,Landline 2 Extension,Landline Phone 3,Landline 3 Extension,Language Preference,Notify by SMS,Notify by Email,String Attribute 1,String Attribute 2,String Attribute 3,String Attribute 4,String Attribute 5,String Attribute 6,String Attribute 7,String Attribute 8,String Attribute 9,String Attribute 10,String Attribute 11,String Attribute 12,String Attribute 13,String Attribute 14,String Attribute 15,String Attribute 16,String Attribute 17,String Attribute 18,String Attribute 19,String Attribute 20,Integer Attribute 1,Integer Attribute 2,Integer Attribute 3,Integer Attribute 4,Integer Attribute 5,True/False Attribute 1,True/False Attribute 2,True/False Attribute 3,True/False Attribute 4,True/False Attribute 5,Date Attribute 1,Date Attribute 2,Date Attribute 3,Date Attribute 4,Date Attribute 5
123456,bar,foo,foo@bar.com,,,fbar,EMPLOYEE,5704445555,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
654321,doe,john,jdoe@bucknell.edu,,,jdoe,STUDENT,+15556667777,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
but was:
"Unique Loader ID,Last Name,First Name,Registration Email Address,Email Address 2,Email Address 3,Site Username,Role,Mobile Phone 1,Mobile Phone 2,Mobile Phone 3,Mobile 1 Voice,Mobile 2 Voice,Mobile 3 Voice,Mobile Carrier 1,Mobile Carrier 2,Mobile Carrier 3,Landline Phone 1,Landline 1 Extension,Landline Phone 2,Landline 2 Extension,Landline Phone 3,Landline 3 Extension,Language Preference,Notify by SMS,Notify by Email,String Attribute 1,String Attribute 2,String Attribute 3,String Attribute 4,String Attribute 5,String Attribute 6,String Attribute 7,String Attribute 8,String Attribute 9,String Attribute 10,String Attribute 11,String Attribute 12,String Attribute 13,String Attribute 14,String Attribute 15,String Attribute 16,String Attribute 17,String Attribute 18,String Attribute 19,String Attribute 20,Integer Attribute 1,Integer Attribute 2,Integer Attribute 3,Integer Attribute 4,Integer Attribute 5,True/False Attribute 1,True/False Attribute 2,True/False Attribute 3,True/False Attribute 4,True/False Attribute 5,Date Attribute 1,Date Attribute 2,Date Attribute 3,Date Attribute 4,Date Attribute 5
123456,bar,foo,foo@bar.com,,,fbar,EMPLOYEE,5704445555,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
654321,doe,john,jdoe@bucknell.edu,,,jdoe,STUDENT,+15556667777,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
1743587677
Anonymous
Ich arbeite derzeit an einem Unit -Test für eine Kotlin -Funktion, die eine CSV -Datei aus einigen Modelldaten generiert. Ich stoße auf einige seltsame Testausfälle und die Standardausgabe von Assertj hilft bei der Diagnose des Problems nicht viel. Nach dem, was ich beurteilen kann, wird der Fehler durch die Charakter -Codierung verursacht. Die "erwartete x erwartete x, aber y" sagt mir nichts, da X und Y die gleiche zu sein scheinen. Gibt es eine Möglichkeit, die Testausgabe zu erhalten, um genau anzuzeigen, welche Zeichen nicht in den Zeichenfolgen übereinstimmen?[code]internal fun List.buildCsv(dp: INT293DependencyProvider):File { val file = File("/tmp/${dp.outputFileName}.csv") file.bufferedWriter(Charsets.ISO_8859_1).use { out -> out.write(RaveOutput.HEADER) this.forEach { out.write(it.toCsvRow()) } } return file } @Test fun `Test generate csv from contacts`() { mockContext(300).value().let { context -> testInt293DependencyProvider(context).let { dp -> javaClass.classLoader.getResourceAsStream("rave-contacts.csv").use { stream -> val expected = IOUtils.toString(stream, Charsets.ISO_8859_1) val contacts = listOf( Contact("123456", "foo", "bar", "foo@bar.com", "5704445555", Type.EMPLOYEE, "fbar"), Contact("654321", "john", "doe", "jdoe@bucknell.edu", "+15556667777", Type.STUDENT, "jdoe") ) val output = contacts.buildCsv(dp) val actual = IOUtils.toString(output.inputStream(), Charsets.ISO_8859_1) assertNotNull(actual) assertThat(actual).isEqualTo(expected) } } } } [ERROR] Test.Test generate csv from contacts expected: "Unique Loader ID,Last Name,First Name,Registration Email Address,Email Address 2,Email Address 3,Site Username,Role,Mobile Phone 1,Mobile Phone 2,Mobile Phone 3,Mobile 1 Voice,Mobile 2 Voice,Mobile 3 Voice,Mobile Carrier 1,Mobile Carrier 2,Mobile Carrier 3,Landline Phone 1,Landline 1 Extension,Landline Phone 2,Landline 2 Extension,Landline Phone 3,Landline 3 Extension,Language Preference,Notify by SMS,Notify by Email,String Attribute 1,String Attribute 2,String Attribute 3,String Attribute 4,String Attribute 5,String Attribute 6,String Attribute 7,String Attribute 8,String Attribute 9,String Attribute 10,String Attribute 11,String Attribute 12,String Attribute 13,String Attribute 14,String Attribute 15,String Attribute 16,String Attribute 17,String Attribute 18,String Attribute 19,String Attribute 20,Integer Attribute 1,Integer Attribute 2,Integer Attribute 3,Integer Attribute 4,Integer Attribute 5,True/False Attribute 1,True/False Attribute 2,True/False Attribute 3,True/False Attribute 4,True/False Attribute 5,Date Attribute 1,Date Attribute 2,Date Attribute 3,Date Attribute 4,Date Attribute 5 123456,bar,foo,foo@bar.com,,,fbar,EMPLOYEE,5704445555,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 654321,doe,john,jdoe@bucknell.edu,,,jdoe,STUDENT,+15556667777,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,," but was: "Unique Loader ID,Last Name,First Name,Registration Email Address,Email Address 2,Email Address 3,Site Username,Role,Mobile Phone 1,Mobile Phone 2,Mobile Phone 3,Mobile 1 Voice,Mobile 2 Voice,Mobile 3 Voice,Mobile Carrier 1,Mobile Carrier 2,Mobile Carrier 3,Landline Phone 1,Landline 1 Extension,Landline Phone 2,Landline 2 Extension,Landline Phone 3,Landline 3 Extension,Language Preference,Notify by SMS,Notify by Email,String Attribute 1,String Attribute 2,String Attribute 3,String Attribute 4,String Attribute 5,String Attribute 6,String Attribute 7,String Attribute 8,String Attribute 9,String Attribute 10,String Attribute 11,String Attribute 12,String Attribute 13,String Attribute 14,String Attribute 15,String Attribute 16,String Attribute 17,String Attribute 18,String Attribute 19,String Attribute 20,Integer Attribute 1,Integer Attribute 2,Integer Attribute 3,Integer Attribute 4,Integer Attribute 5,True/False Attribute 1,True/False Attribute 2,True/False Attribute 3,True/False Attribute 4,True/False Attribute 5,Date Attribute 1,Date Attribute 2,Date Attribute 3,Date Attribute 4,Date Attribute 5 123456,bar,foo,foo@bar.com,,,fbar,EMPLOYEE,5704445555,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 654321,doe,john,jdoe@bucknell.edu,,,jdoe,STUDENT,+15556667777,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,," [/code]