不确定这是否可行,但如果有的话,它会为我节省很多时间。当我在Eclise中创建一个Junit4测试用例时,我通常不包括我想先测试的所有方法,稍后,我想在测试用例中添加未经测试的方法或新方法。目前,我是通过在现有的测试用例类中键入新的测试方法来实现的。有没有办法让我突出显示方法名称,如果不存在则创建测试用例或添加到Eclipse中的现有测试用例? 提前谢谢!
大卫
答案 0 :(得分:2)
没有。但说实话,你不应该对测试方法进行一对一的映射。我认为Eclipse“Create JUnit TestCase”对话框的第二页设计非常糟糕,因为它给人的印象是一对一的映射在某种程度上是有用的。
您应该拥有完全测试每个方法所需的测试数量,并且每个测试应仅测试方法行为的一个方面。因此,如果您需要两到三次或四次测试,那很好。
这让我断言你所寻求的功能并不是非常有用,因为无论如何你需要增加更多的测试方法!
答案 1 :(得分:1)
不可能。此外,一种方法并不意味着您只有一个测试用例。正如@Danny所说,您需要提出几个测试用例来测试该方法的每个可能的有用场景。如果将所有这些测试场景组合成一个大的测试用例,那么它就不会太有用了。这是因为当测试用例失败时,您将不得不深入研究测试用例,以了解哪种情况失败,这很麻烦。
要测试一种方法,通常(如果不是,总是)更好的是拥有许多小型测试用例而不是一个大型测试用例。当它失败时,您确切地知道哪个测试场景立即失败。
答案 2 :(得分:1)
像往常一样创建新的JUnit,但是为该类使用另一个名称,说JavaClassTest2然后复制粘贴生成的方法。
关闭主题:
我更喜欢“一对一”映射,除非我找到一种更好的方法,每个方案使用一种方法。我想避免通过测试方法名称识别出这么多测试场景。我所做的是遵循这种模式:
在为变量名称建立索引后,逐段实施每个场景的测试。
@Test public void testRemoveHtmlTags() {
String[] test = {
"0. Null argument test failed.",
"1. Case sensitive test failed.",
"2. Case insensitive test failed." };
try {
StringUtils.removeHtmlTags(null);
fail(test[0]);
} catch (IllegalArgumentException iae) {}
String input1 = "The quick Brown <b>Fox</b> Jumps Over The Lazy Dog. ><";
String output1 = StringUtils.removeHtmlTags(input1);
assertEquals(test[1], "The quick Brown Fox Jumps Over The Lazy Dog. ><", output1);
String input2 = "The quick Brown <B>Fox</b> Jumps Over The Lazy Dog. ><";
String output2 = StringUtils.removeHtmlTags(input2);
assertEquals(test[2], "The quick Brown Fox Jumps Over The Lazy Dog. ><", output2);
}