尝试在Android Studio

时间:2017-05-17 14:14:17

标签: java android regex android-studio junit4

我正在尝试运行本地测试来测试我从源字符串中检测某些URL的算法。

我有一个类CalendarUtil,它与用户日历接口,并从标题,位置和描述字段中解析他们的会议信息。

我没有进行集成测试,而是决定转向本地,因为我只想用硬编码输入来测试这个算法,以确保我在不依赖其他Android API的情况下获得预期的结果。

CalendarUtil就像一个模型类,因为它引用了上面提到的meeting 3字段,所以在我的@Before setUp()方法中,我创建了一个对象,并且只用适当的字符串设置这三个字段。

然后我创建了一个用于解析URL的@Test函数,这是错误的堆栈跟踪:

java.lang.NullPointerException
at com.myapp.utils.StringUtil.getStringMatches(StringUtil.java:94)
at com.myapp.utils.StringUtil.extractUrls(StringUtil.java:26)
at com.myapp.utils.CalendarUtil.parseAndRemoveUrls(CalendarUtil.java:186)
at com.myapp.MeetingDetectionTests.parseWebexUrl(MeetingDetectionTests.java:42)

在StringUtil内的第94行,这是方法:

/**
 * Generic function that will take in a source that will be parsed according to a provided Regex pattern
 *
 * @param source  The string to parse
 * @param pattern The regex pattern to use
 * @return A HashMap with the key being the match from the source and the values being the NSRange of where the match was found in the source.
 */
private static HashMap<String, NSRange> getStringMatches(final String source, final Pattern pattern) {
    Matcher matcher = pattern.matcher(source); //Line 94, NullPointerException

    //The key is our match in the source; the values is an array of integers representing the start and end index of the match
    HashMap<String, NSRange> retVal = new HashMap<>();

    while (matcher.find())
        //Add the match as a key to our hashmap with an NSRange indicated where in the string it was found
        retVal.put(matcher.group(), new NSRange(matcher.start(), matcher.end() - matcher.start()));

    return retVal;
}

模式的传递值是 Patterns.WEB_URL ,这是一个android提供的URL的正则表达式。它在我的测试中显示为null,但在运行我的应用程序时有效。

任何想法发生了什么?

0 个答案:

没有答案