2014-09-20 106 views
-1

我遇到了我的测试问题。它看起来很简单。你所要做的只是删除一个空间,但由于某种原因我总是收到一个错误。测试错误

@Override 
    public String format(String template) { 
     if(template.equals("%t")){ 
      return String.format("%02 seconds", getSeconds()); 
     } 
     else if(template.equals("%h:%M:%S")) { 
      return String.format("%02d:%02d:%02d", getHours(), getMinutes(), getSeconds()); 
     } 
     else if(template.equals("%d days, %h hours, %m minutes, and %s seconds")){ 
      return String.format("%d days,%2d hours,%2d minutes, and %2d seconds", getDays(), getHours(), 
        getMinutes(), getSeconds()); 
     } 
     else return null; 

    } 


@Test 
    public void testFormatExample1() { 
     assertEquals("3 days, 4 hours, 0 minutes, and 9 seconds", 
       fromDHMS(3, 4, 0, 9) 
         .format("%d days, %h hours, %m minutes, and %s seconds")); 
    } 

这是我应该得到

3 days, 4 hours, 0 minutes, and 9 seconds 

然而,这就是我不断收到

Expected :3 days, 4 hours, 0 minutes, and 9 seconds 
Actual :3 days, 4 hours, 0 minutes, and 9 seconds 

我用尽了一切在and 9 seconds

摆脱额外的空间

如果我去我的if语句的最后一种情况,我删除了之间的空格和%2d seconds,它仍然不起作用。我为它之前的空间做了它,它工作。

有谁知道这个问题?

+0

'fromDHMS()'的代码在哪里? – 2014-09-20 15:20:38

+0

没想到有必要 – 2014-09-20 15:32:29

回答

4

问题只是%2d - 你明确地问要转换成最少两个字符的秒数。只要让它%d,它应该没问题。有关详细信息,请参见Formatter documentation

请注意,目前,如果您有10个或10个以上的时间和10分钟以上的时间,则可能无法获得您期望的输出 - 逗号后没有空格。我怀疑你想要的格式字符串:

"%d days, %d hours, %d minutes, and %d seconds" 

顺便说一句,不过,我不认为只有接受了一些非常具体的输入模板是一个非常不错的主意 - 如果这就是你需要支持,我'使用枚举来代替它们。

+0

谢谢。我现在明白了。 – 2014-09-20 15:33:49