我已经在我的JUnit测试用例上运行了EclEmma,并且在一些测试用例上达到了100%。然而,对于覆盖率为82%或95%的分支,在我的代码旁边有一条消息说“错过了2个分支中的1个”,我似乎无法解决这个问题。
在查看了我的课程后,我注意到这条消息只出现在我的if语句旁边,这就是为什么我的测试没有被100%覆盖的原因。
我想我是在问是否有人知道如何在JUnit中测试if语句,这样就不会遗漏任何一个分支。
这是我试图测试的代码:
private double height;
public void setHeight(double height){
if(height <=0){
this.height = 0;
}
else{
this.height = height;
}
}//method close
(我正在使用JUnit 4)
您的代码
public void setHeight(double height){
if(height <=0){
this.height = 0;
}
else{
this.height = height;
}
}
有两个可能的分支:
<代码>高度
public void setHeight(double height){
this.height = 0;
}
<代码>高度
public void setHeight(double height){
this.height = height;
}
因此,在if语句中,可以转到else中的一条或另一条语句。您必须创建两个单元测试来覆盖所有可能的方法-一个用于传递的参数<代码>高度
简单:
您希望在被测方法中的每个路径都有一个不同的测试用例;比如:
它们中的每一个都为您的测试方法提供特定的输入,并检查预期的输出。
这里真正的收获是:考虑一下你的代码。您不应该需要覆盖率工具来判断您的方法需要更多的测试。相反:你看着你的方法,思考它在做什么;然后编写测试用例。
报道可以告诉你你做了正确的事;但是“做正确的事”是你自己应该努力去做的;而不是满足一些数字。
而且,正如评论所指出的:考虑使用TDD方法:当您在创建“匹配”的生产代码之前编写测试时,您将“思考”部分作为工作过程的基本元素。
我有一个项目结构: 我用mvn clean:install构建了它,并创建了jar文件。现在,我想使用命令行运行QbsApplicationTests。为此,我在一个目录中放入了两个罐子: 并执行以下命令: 然而,我不断得到以下错误 问题: 我应该如何从控制台运行QbsApplicationTests测试 编辑我还尝试添加以下内容: 到主类,但Intellij一直说无法解析。
上下文:我想编译和测试一个多模块项目中的所有模块,但如果任何一个失败,编译或测试,我希望整个构建失败。 默认配置要么在第一次失败时停止,要么在测试失败后跳过模块 跑步: 在第一个失败的模块处停止。 如果添加: mvn clean Install-FAE//结束时失败 null 响应非常感谢-否则,如果有多个问题,我们必须在构建服务器上重复运行测试-消耗大量时间。
我正在开发一个spring启动应用程序并编写一些junit测试。 但我发现,当我运行任何测试时,tomcat也会启动,这使得这些测试非常缓慢,浪费了很多时间。 当我开发一个SpringMvc应用程序时,junit测试可以在不启动tomcat的情况下运行,这节省了很多时间。 所以,我想问它在那里无论如何要运行启动tomcat的springstart测试?
我有一个测试类,有几个测试,都通过了。如果我将该类添加到测试套件中,则所有测试都会失败。 原因是无法解决对JavaFX类型的依赖关系。我使用了一个初始化JavaFX框架(例如应用程序线程等)的测试规则,这似乎可以正常工作,正如通过的测试所表明的那样。由于异常,测试失败: 为什么JUnit的行为会因我运行测试的方式而异?我怎样才能解决这个问题?请注意,这并不是针对so的GUI测试(我不想模拟用户操作
我们用Rest Assured和JUnit 5编写了API测试,并试图并行运行测试,因为测试之间没有依赖关系。我们已经尝试了JUnit 5的实验性并行执行,方法是设置: …但我们已经看到,通常当测试失败时,测试报告中不包含它们的输出。 这是已知问题吗?有什么变通方法吗?