- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要为永无止境的 main() 方法编写一个 JUnit 测试用例。这个 main() 方法在处理完一些文件后会 hibernate 一分钟,然后恢复执行。这个过程一直持续下去。
我使用下面的代码为它编写了 JUnit:
@Test (timeout = 10000)
public void testMainMethod()
{
ClassName.main(null);
assertEquals(true, true);
}
毫不奇怪,我的测试用例失败并显示java.lang.Exception: test timed out after 10000 milliseconds 消息。即使 main() 方法按预期工作,此测试用例也会因超时异常而失败。我如何覆盖这个失败的测试用例的行为,以便在超时异常的情况下它应该将这个测试用例的结果显示为“成功”。
编辑实际需求是:我需要从特定位置搜索文件,如果找到,则将它们移动到不同的文件夹。此搜索应每 30 分钟进行一次。为此,我使用了以下代码:
public class FaxProcessor {
public static void main(String[] args) {
LOGGER.info("*** Starting Fax Server Processor ***");
int poll_time = 1800000;
LOGGER.info("Poll Time set to " + poll_time + " millisec");
FaxProcessor faxProcessor = new FaxProcessor();
while (true) {
try {
if(LOGGER.debugEnabled()){
LOGGER.debug("Starting new pass of fax processor");
}
faxProcessor.startProcessing();
} catch (Exception e) {
LOGGER.error("Processing Error", e);
} finally {
try {
// Wait for next loop
Thread.sleep(poll_time);
} catch (InterruptedException e) {
LOGGER.error("Thread Exception", e);
}
}
}
}
// startProcessing and other private methods here
}
最大的问题是,我只有一个公共(public)方法{main() 方法},所有其他方法都是私有(private)的,所以我无法为它们编写 JUnit 测试用例。此外,main() 方法不返回任何内容,它仅将文件从一个文件夹移动到另一个文件夹,如果一次移动文件失败,它会尝试在下一次移动文件时执行相同操作。所以使用 JUnit 测试用例,我只想检查整个过程中是否出现意外异常。
如果我不在 JUnit 中指定超时,那么测试用例将永远不会完成。一旦超时发生,我想检查测试用例是否由于超时异常而完成,或者是否有其他异常来自导致 JUnit 测试用例的 main() 方法。
如果是超时异常,这意味着我程序中的所有内容都在正确的方向进行,直到发生超时,因此测试用例应该成功。在所有其他情况下,它应将 FAILED 显示为 JUnit 状态。
最佳答案
您人为地限制了您的测试环境,使用以下声明:“我只有一个公共(public)方法 {main() 方法},所有其他方法都是私有(private)的”——谁说的?如果这是你老师的要求,那么你应该认真考虑下课。
1) 适当的测试意味着测试 a) 候选文件被识别,b) 候选文件被移动,以及 c) 操作定期发生。
2) 将您的主程序分解为无限循环控制部分和工作程序部分。更好的是,让等待间隔成为一个计算值。
3) 使用protected
方法代替私有(private)方法。由于它们受到保护,您现在可以根据需要使用子类来访问方法,而不会违反必要的封装。
关于java - 如何覆盖失败的 JUnit 测试用例的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20108945/
我最近购买了《C 编程语言》并尝试了 Ex 1-8这是代码 #include #include #include /* * */ int main() { int nl,nt,nb;
早上好!我有一个变量“var”,可能为 0。我检查该变量是否为空,如果不是,我将该变量保存在 php session 中,然后调用另一个页面。在这个新页面中,我检查我创建的 session 是否为空,
我正在努力完成 Learn Python the Hard Way ex.25,但我无法理解某些事情。这是脚本: def break_words(stuff): """this functio
我是一名优秀的程序员,十分优秀!