我在我的应用中测试方法。我正在从存储的联系人生成一个vcard并将其与硬编码的vcard进行比较。它们应该完全相同vcard
,它们是。logcat
。问题是测试失败了,不明白如何。
从\n\n
输出看起来很明显它没有打印双新行(public void testGetContactAsVcard() {
String vcardActual = utils.getContactAsVcard(contact.getAllContactIds().get(0));
// This is the vcard for the first contact (position zero)
String vcardExpected = "BEGIN:VCARD" +
"\nVERSION:2.1" +
"\nN:Klisnmann;Jurgen;;;" +
"\nFN:Jurgen Klinsmann" +
"\nX-ANDROID-CUSTOM:vnd.android.cursor.item/nickname;mynickname;;;;;;;;;;;;;;" +
"\nTEL;CELL:922-222-222" +
"\nTEL;WORK:911-222-333" +
"\nEMAIL;WORK:work@mail.com" +
"\nEMAIL;HOME:home@mail.com" +
"\nADR;WORK:poBox;;StreetSomething;Berlin Alexanderplatz;Berlin;28000;Germany" +
"\nADR;HOME:poBox;;MyStreet20;Berlin Potsdam;Berlin;2800;Germany" +
"\nORG:MAT\\;MobileDept." +
"\nTITLE:Eng." +
"\nURL:www.company.com" +
"\nURL:myblog.com" +
"\nURL:custom.com" +
"\nPHOTO;ENCODING=BASE64;JPEG:/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAMCAgMCAgMDAwM" +
"\n EAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/" +
"\n 2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUF" +
"\n BQUFBQUFBQUFBQUFBT/wAARCAAkAGADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAA" +
"\n ECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaE" +
"\n II0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZn" +
"\n aGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJy" +
"\n tLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAw" +
"\n QFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobH" +
"\n BCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hp" +
"\n anN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0" +
"\n tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD778e+J/Gem65qtvo1hq" +
"\n 1xEvlm0ktrSN4MeWC4JMZZiW44OBn2xXis3xn/AGjl0Cyv4vhRrD3rrbG60trmzWeLc0iziNv" +
"\n LMchj2Iy5dA6yryjBkH0z4v8ACOjeMrq1tNd8MLrlnAsjq9wI3gbzYZraWOSNmHmKYZ5QVZWU" +
"\n iTpkDGdtg0fw/peoSeG/E0kklrb6e+lvfG8njFxJBCwuALh45HjAVnnLOVRZSJCGbd1RxCXLC" +
"\n ME3tt+tnvonta76rXilQbbk5v8AHv5M8/8A+Er+J3/PDUv/AAVL/wDG6uaB4n+JE/iTSoby3v" +
"\n hpsk6LcySaeEwu9QR/qum3dlsjGB1zkeneAPDuneFvCGm6dpejzaBaIjS/2fdSiWeOSRjJKZp" +
"\n A8nmStI7s8hdy7szFmJJPQVp9ai42dOKf9eRH1SUZXVWTX9eYUUUVwnoBWb4m1RtD8OatqSmM" +
"\n NZ2ktwDN9wFEZvm5HHHPIrSrlPiz/wAks8Zf9ga8/wDRD0AeIeMPiX8Z9KN2+geD9b1wR2KGC" +
"\n A29tCZrsJcM4Lso2RsUt0U7WIabJyoYrytz8a/2j0YSQfCTWpbc2c1xse6sknEwmKQwFdhTcy" +
"\n bJWbftRd4BkdVV/fNV0rf4m0vUZfBfiO6ure/QRT6draJa26tPdIbh4mu4wVCSGWVRGzMssSh" +
"\n ZWiCx7EngfSotd0HUBYaxdXtiJ7KG7bV52FvC6l3Moef96jtHGMEO27yiQAm5OxYi7XuJaX6e" +
"\n fdenn5dHwPDSjf32/m/Ls/X+tvBdU+Lfxx0uXUlT4eeJNWS3uYI7Z9NhscXULx7pJR5xiKGNw" +
"\n yFW+9mMqSGfy/S/AfiLx/feMbS31qC7TSGVi8ktkIwW2OcMfLG0ZCYO7kkjA79d4k+DvgrxnN" +
"\n HL4l8NWHiYx2n2JE12P7fGkOQWASbcoLlU3tjc/lpuLbFx2NH1hOLi4LX0/wAkOOGlGSftHp6" +
"\n 6/j1MPWtQiXUbPT5E1SJrkhI7qygd4txDEq7qCIwAmdz7V5UBstg+CXnwign1i31GT4mfHExa" +
"\n 74fewt5oZ5UgsPNltx5zW62oaG7YXbAPNGfKVJmxEYEZPTfHniPUZtZfTbDVLzQ/sodGns7mz" +
"\n QzNJAwQkXEEuNjMHUjA3Iu/cpKmjffE+7ayRlW4t/OkSRZILy3aRVQpuQqYW2q+0g7hnEjbSM" +
"\n KV5oN025Q62v8AK9vzv8nfodjSerV7X8t9/wAhPBep3llqN/pUuifEJl0i/Ed9rutS28kWoub" +
"\n YytcRokpLRHy4l8u1iRBJchEjGycQ9dD421CXxVa6R/whfiCOxnLg645sxZxYTcN6/aPOG4go" +
"\n MRH5hzgFSfPYviLqMev22oNqesSWkXm79KaWz+zTb3kZdzC0Eo2B1Vdsi5ESbtxLl+l0z4yLq" +
"\n Gt2GmnSHje6cIJBKzKo3KpJOzGfmGASCcHHQ4540VSd4NO/l/w34L7zWU3Pf+vvuekUUUVqQF" +
"\n cj8XoI7j4VeMVljWVRpF24V1BAZYXKn6ggEehArrqz/EOnyatoGp2MLIs1zaywoXJChmQgZxn" +
"\n jmgDy34u/C3TfHzaBd3vjD4k+HbLR/tFitr4R1K9tBevcHyEkuPIQzSeSyLIkhIRc73LozZ6X" +
"\n wj4bddRl1h9c8XXVrLI11ZaLq7rHFa5EisRhFkYSeYXEVzI/lnYFSHYFXh4vBPipXiaTwvBNs" +
"\n GCrXaKH4wM7ZB7cjGcc55zWPw98Wkk/2Fj2F5F/8VWvsanLZSX3r/P+vvvze0p31T+5/wCR6L" +
"\n 4Z+KFxrtnc3l74H8V+HbS3muoHk1OzhZy0EkceUhgmlldZGeTy2VCrLbu+QjwtLpeBvGl3400" +
"\n rT9Qm8J674ZhvbCK+WLXUt4poi7OPIkijmd0lVVVmUjAEijO8OqeUf8K88W/9AP8A8nIf/iq2" +
"\n oqCwooooAKKKKACiiigD/2Q==" +
"\n\nNOTE:Somenotes..." +
"\nX-ANDROID-CUSTOM:vnd.android.cursor.item/contact_event;1985-07-20;1;;;;;;;;;;;;;" +
"\nEND:VCARD";
Log.d(TAG, "vcard actual: " + vcardActual);
Log.d(TAG, "vcard expected: " + vcardExpected);
assertEquals(vcardExpected, vcardActual);
}
)
这是我的代码:
logcat
这是vcard actual:
BEGIN:VCARD
VERSION:2.1
N:Klisnmann;Jurgen;;;
FN:Jurgen Klinsmann
X-ANDROID-CUSTOM:vnd.android.cursor.item/nickname;mynickname;;;;;;;;;;;;;;
TEL;CELL:922-222-222
TEL;WORK:911-222-333
EMAIL;WORK:work@mail.com
EMAIL;HOME:home@mail.com
ADR;WORK:poBox;;StreetSomething;Berlin Alexanderplatz;Berlin;28000;Germany
ADR;HOME:poBox;;MyStreet20;Berlin Potsdam;Berlin;2800;Germany
ORG:MAT\;MobileDept.
TITLE:Eng.
URL:www.company.com
URL:myblog.com
URL:custom.com
PHOTO;ENCODING=BASE64;JPEG:/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAMCAgMCAgMDAwM
EAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/
2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUF
BQUFBQUFBQUFBQUFBT/wAARCAAkAGADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAA
ECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaE
II0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZn
aGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJy
tLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAw
QFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobH
BCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hp
anN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0
tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD778e+J/Gem65qtvo1hq
1xEvlm0ktrSN4MeWC4JMZZiW44OBn2xXis3xn/AGjl0Cyv4vhRrD3rrbG60trmzWeLc0iziNv
LMchj2Iy5dA6yryjBkH0z4v8ACOjeMrq1tNd8MLrlnAsjq9wI3gbzYZraWOSNmHmKYZ5QVZWU
iTpkDGdtg0fw/peoSeG/E0kklrb6e+lvfG8njFxJBCwuALh45HjAVnnLOVRZSJCGbd1RxCXLC
ME3tt+tnvonta76rXilQbbk5v8AHv5M8/8A+Er+J3/PDUv/AAVL/wDG6uaB4n+JE/iTSoby3v
hpsk6LcySaeEwu9QR/qum3dlsjGB1zkeneAPDuneFvCGm6dpejzaBaIjS/2fdSiWeOSRjJKZp
A8nmStI7s8hdy7szFmJJPQVp9ai42dOKf9eRH1SUZXVWTX9eYUUUVwnoBWb4m1RtD8OatqSmM
NZ2ktwDN9wFEZvm5HHHPIrSrlPiz/wAks8Zf9ga8/wDRD0AeIeMPiX8Z9KN2+geD9b1wR2KGC
A29tCZrsJcM4Lso2RsUt0U7WIabJyoYrytz8a/2j0YSQfCTWpbc2c1xse6sknEwmKQwFdhTcy
bJWbftRd4BkdVV/fNV0rf4m0vUZfBfiO6ure/QRT6draJa26tPdIbh4mu4wVCSGWVRGzMssSh
ZWiCx7EngfSotd0HUBYaxdXtiJ7KG7bV52FvC6l3Moef96jtHGMEO27yiQAm5OxYi7XuJaX6e
fdenn5dHwPDSjf32/m/Ls/X+tvBdU+Lfxx0uXUlT4eeJNWS3uYI7Z9NhscXULx7pJR5xiKGNw
yFW+9mMqSGfy/S/AfiLx/feMbS31qC7TSGVi8ktkIwW2OcMfLG0ZCYO7kkjA79d4k+DvgrxnN
HL4l8NWHiYx2n2JE12P7fGkOQWASbcoLlU3tjc/lpuLbFx2NH1hOLi4LX0/wAkOOGlGSftHp6
6/j1MPWtQiXUbPT5E1SJrkhI7qygd4txDEq7qCIwAmdz7V5UBstg+CXnwign1i31GT4mfHExa
74fewt5oZ5UgsPNltx5zW62oaG7YXbAPNGfKVJmxEYEZPTfHniPUZtZfTbDVLzQ/sodGns7mz
QzNJAwQkXEEuNjMHUjA3Iu/cpKmjffE+7ayRlW4t/OkSRZILy3aRVQpuQqYW2q+0g7hnEjbSM
KV5oN025Q62v8AK9vzv8nfodjSerV7X8t9/wAhPBep3llqN/pUuifEJl0i/Ed9rutS28kWoub
YytcRokpLRHy4l8u1iRBJchEjGycQ9dD421CXxVa6R/whfiCOxnLg645sxZxYTcN6/aPOG4go
MRH5hzgFSfPYviLqMev22oNqesSWkXm79KaWz+zTb3kZdzC0Eo2B1Vdsi5ESbtxLl+l0z4yLq
Gt2GmnSHje6cIJBKzKo3KpJOzGfmGASCcHHQ4540VSd4NO/l/w34L7zWU3Pf+vvuekUUUVqQF
cj8XoI7j4VeMVljWVRpF24V1BAZYXKn6ggEehArrqz/EOnyatoGp2MLIs1zaywoXJChmQgZxn
jmgDy34u/C3TfHzaBd3vjD4k+HbLR/tFitr4R1K9tBevcHyEkuPIQzSeSyLIkhIRc73LozZ6X
wj4bddRl1h9c8XXVrLI11ZaLq7rHFa5EisRhFkYSeYXEVzI/lnYFSHYFXh4vBPipXiaTwvBNs
GCrXaKH4wM7ZB7cjGcc55zWPw98Wkk/2Fj2F5F/8VWvsanLZSX3r/P+vvvze0p31T+5/wCR6L
4Z+KFxrtnc3l74H8V+HbS3muoHk1OzhZy0EkceUhgmlldZGeTy2VCrLbu+QjwtLpeBvGl3400
rT9Qm8J674ZhvbCK+WLXUt4poi7OPIkijmd0lVVVmUjAEijO8OqeUf8K88W/9AP8A8nIf/iq2
oqCwooooAKKKKACiiigD/2Q==
NOTE:Somenotes...
X-ANDROID-CUSTOM:vnd.android.cursor.item/contact_event;1985-07-20;1;;;;;;;;;;;;;
END:VCARD
vcard expected:
BEGIN:VCARD
VERSION:2.1
N:Klisnmann;Jurgen;;;
FN:Jurgen Klinsmann
X-ANDROID-CUSTOM:vnd.android.cursor.item/nickname;mynickname;;;;;;;;;;;;;;
TEL;CELL:922-222-222
TEL;WORK:911-222-333
EMAIL;WORK:work@mail.com
EMAIL;HOME:home@mail.com
ADR;WORK:poBox;;StreetSomething;Berlin Alexanderplatz;Berlin;28000;Germany
ADR;HOME:poBox;;MyStreet20;Berlin Potsdam;Berlin;2800;Germany
ORG:MAT\;MobileDept.
TITLE:Eng.
URL:www.company.com
URL:myblog.com
URL:custom.com
PHOTO;ENCODING=BASE64;JPEG:/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAMCAgMCAgMDAwM
EAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/
2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUF
BQUFBQUFBQUFBQUFBT/wAARCAAkAGADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAA
ECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaE
II0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZn
aGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJy
tLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAw
QFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobH
BCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hp
anN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0
tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD778e+J/Gem65qtvo1hq
1xEvlm0ktrSN4MeWC4JMZZiW44OBn2xXis3xn/AGjl0Cyv4vhRrD3rrbG60trmzWeLc0iziNv
LMchj2Iy5dA6yryjBkH0z4v8ACOjeMrq1tNd8MLrlnAsjq9wI3gbzYZraWOSNmHmKYZ5QVZWU
iTpkDGdtg0fw/peoSeG/E0kklrb6e+lvfG8njFxJBCwuALh45HjAVnnLOVRZSJCGbd1RxCXLC
ME3tt+tnvonta76rXilQbbk5v8AHv5M8/8A+Er+J3/PDUv/AAVL/wDG6uaB4n+JE/iTSoby3v
hpsk6LcySaeEwu9QR/qum3dlsjGB1zkeneAPDuneFvCGm6dpejzaBaIjS/2fdSiWeOSRjJKZp
A8nmStI7s8hdy7szFmJJPQVp9ai42dOKf9eRH1SUZXVWTX9eYUUUVwnoBWb4m1RtD8OatqSmM
NZ2ktwDN9wFEZvm5HHHPIrSrlPiz/wAks8Zf9ga8/wDRD0AeIeMPiX8Z9KN2+geD9b1wR2KGC
A29tCZrsJcM4Lso2RsUt0U7WIabJyoYrytz8a/2j0YSQfCTWpbc2c1xse6sknEwmKQwFdhTcy
bJWbftRd4BkdVV/fNV0rf4m0vUZfBfiO6ure/QRT6draJa26tPdIbh4mu4wVCSGWVRGzMssSh
ZWiCx7EngfSotd0HUBYaxdXtiJ7KG7bV52FvC6l3Moef96jtHGMEO27yiQAm5OxYi7XuJaX6e
fdenn5dHwPDSjf32/m/Ls/X+tvBdU+Lfxx0uXUlT4eeJNWS3uYI7Z9NhscXULx7pJR5xiKGNw
yFW+9mMqSGfy/S/AfiLx/feMbS31qC7TSGVi8ktkIwW2OcMfLG0ZCYO7kkjA79d4k+DvgrxnN
HL4l8NWHiYx2n2JE12P7fGkOQWASbcoLlU3tjc/lpuLbFx2NH1hOLi4LX0/wAkOOGlGSftHp6
6/j1MPWtQiXUbPT5E1SJrkhI7qygd4txDEq7qCIwAmdz7V5UBstg+CXnwign1i31GT4mfHExa
74fewt5oZ5UgsPNltx5zW62oaG7YXbAPNGfKVJmxEYEZPTfHniPUZtZfTbDVLzQ/sodGns7mz
QzNJAwQkXEEuNjMHUjA3Iu/cpKmjffE+7ayRlW4t/OkSRZILy3aRVQpuQqYW2q+0g7hnEjbSM
KV5oN025Q62v8AK9vzv8nfodjSerV7X8t9/wAhPBep3llqN/pUuifEJl0i/Ed9rutS28kWoub
YytcRokpLRHy4l8u1iRBJchEjGycQ9dD421CXxVa6R/whfiCOxnLg645sxZxYTcN6/aPOG4go
MRH5hzgFSfPYviLqMev22oNqesSWkXm79KaWz+zTb3kZdzC0Eo2B1Vdsi5ESbtxLl+l0z4yLq
Gt2GmnSHje6cIJBKzKo3KpJOzGfmGASCcHHQ4540VSd4NO/l/w34L7zWU3Pf+vvuekUUUVqQF
cj8XoI7j4VeMVljWVRpF24V1BAZYXKn6ggEehArrqz/EOnyatoGp2MLIs1zaywoXJChmQgZxn
jmgDy34u/C3TfHzaBd3vjD4k+HbLR/tFitr4R1K9tBevcHyEkuPIQzSeSyLIkhIRc73LozZ6X
wj4bddRl1h9c8XXVrLI11ZaLq7rHFa5EisRhFkYSeYXEVzI/lnYFSHYFXh4vBPipXiaTwvBNs
GCrXaKH4wM7ZB7cjGcc55zWPw98Wkk/2Fj2F5F/8VWvsanLZSX3r/P+vvvze0p31T+5/wCR6L
4Z+KFxrtnc3l74H8V+HbS3muoHk1OzhZy0EkceUhgmlldZGeTy2VCrLbu+QjwtLpeBvGl3400
rT9Qm8J674ZhvbCK+WLXUt4poi7OPIkijmd0lVVVmUjAEijO8OqeUf8K88W/9AP8A8nIf/iq2
oqCwooooAKKKKACiiigD/2Q==
NOTE:Somenotes...
X-ANDROID-CUSTOM:vnd.android.cursor.item/contact_event;1985-07-20;1;;;;;;;;;;;;;
END:VCARD
输出:
vcardActual
正如您所看到的,在PHOTO
和NOTE
之间的vcardExpected
中有一个新的空行,但\n\n
中不会发生这种情况。已在NOTE
之前放置PHOTO
。
我希望NOTE
和{{1}}之间有一个空的新行,但出于某种原因,它不会发生。为什么以及如何发生这种情况?
答案 0 :(得分:0)
得到了解决方案。
首先 - > 永远不要完全依赖logcat!新行总是在那里,但由于某种我还不知道的原因,logcat没有输出它。
第二 - > JUnit正在添加[
,]
,<
,>
和new line
。
解决方案:从两个字符串中删除所有空格和新行并进行比较。
final String vcardNoWhiteSpacesNoNewLinesExpected = vcardExpected.replace("\n", "").replace("\r", "").replace(" ", "");
final String vcardNoWhiteSpacesNoNewLinesActual = vcardActual.replace("\n", "").replace("\r", "").replace(" ", "");
他们现在都匹配,问题解决了。