0
我试图学习单元测试和Maven,为此我使用JUnit并编写简单的随机名称生成器。我有以下类:JUnit - NoSuchElementException:找不到行
public class Database {
public String readRandomName(String url) throws FileNotFoundException {
int sum = calculateFileLines(url);
int lines = (int) (Math.random()*sum);
File file = new File(url);
Scanner scanner = new Scanner(file);
for (int i=0; i<lines;i++){
scanner.nextLine();
}
return scanner.nextLine();
}
public int calculateFileLines(String url) throws FileNotFoundException {
int sum = 0;
try (Scanner scanner = new Scanner(new File(url))){
while(scanner.hasNextLine() && scanner.nextLine().length()!=0){
++sum;
}
}
return sum;
}
}
当我运行简单的测试是这样的:
public static void main(String[] args) throws FileNotFoundException {
Database database = new Database();
database.readRandomName("names/maleNamesPL.txt");
}
它完美,但是当我试着写与断言JUnit测试出现意外故障,我穿上”不明白。这是测试代码:
@Test
public void readRandomNameTest() throws FileNotFoundException {
Database database = new Database();
Assert.assertNotNull("Should be some name", database.readRandomName("names/maleNamesPL.txt"));
}
而且结果:
Tests in error:
readRandomNameTest(DatabaseTest): No line found
我希望得到任何帮助,谢谢!
这将有助于如果你想展示抛出'NoSuchElementException'的确切行。 – Andrei
也,你的主要作品完美,但它没有任何断言或系统 – ByeBye
欢迎来到堆栈溢出!请参考[游览](http://stackoverflow.com/tour),环顾四周,并阅读[帮助中心](http://stackoverflow.com/help) ,特别是[如何做我问一个好问题?](http://stackoverflow.com/help/how-to-ask)和[我可以问什么主题?](http://stackoverflow.com/help/on-topic) 。 - * UnitTest *应该**从不**使用JVM内存以外的任何资源。因此,您不应在代码中创建'Scanner'对象,而是将其作为参数传入代码而不是包含文件路径的'String'。 –