我正在尝试为已有的程序创建一些测试。我仍然对Java和整个编程还不熟悉,所以我不确定该怎么做。我有一个.csv文件,可以将其命名为testdata.csv,我想在该测试文件中查找某些单词以进行测试。因此,例如,一个测试可以显示该文件中的多个字符串并说它们在其中。
我尝试使用assert.that,但是它对我不起作用,我可能做错了。只是在网上搜索并试图将事情拼凑起来。我包含的代码是我最后一次尝试,我知道这是不对的...
@org.junit.Test
public void testAssets (){
String fileName;
fileName = "testdata.csv";
Assert.that(fileName, hasItems);
如果测试没有字符串“ UDP,TCP,ICMP”,则测试将失败
答案 0 :(得分:1)
单元测试是关于隔离测试代码,以确保一个或一个单元按预期运行。在上述情况下,您想测试对从文件(或其他任何地方)读入的String
进行操作的逻辑是否可以检测到要检测的内容。
假设您有一个方法:
public boolean isAMatch(String input)
{
return (input.contains("UDP") || input.contains("TCP") || input.contains("ICMP"))
}
您对此方法或代码单元的测试应类似于:
private void testIsAMatch()
{
Assert.assertTrue(isAMatch("This String contains UDP."));
Assert.assertTrue(isAMatch("This String contains TCP."));
Assert.assertTrue(isAMatch("This String contains ICMP."));
Assert.assertFalse(isAMatch("This String does not match."));
}
单元测试背后的想法是,对代码进行测试使其独立于外部资源(例如文件,数据库连接,网站等)而工作。如果文件被编辑或删除怎么办?您怎么知道失败在哪里?单元测试旨在快速告诉您代码更改是否导致逻辑中断。这样,您可以将.csv文件解析为一个大字符串或一个较小的字符串,或者将其输入到isAMatch()
方法中。如果返回false,但您的单元测试通过了,并且假设您正确地读取了文件,则可以放心文件不包含您要查找的匹配项。