# JUnit4 – 基于假设的测试用例

> 原文： [https://howtodoinjava.com/junit/assumption-based-testcases-in-junit-4/](https://howtodoinjava.com/junit/assumption-based-testcases-in-junit-4/)

[**Junit**](//howtodoinjava.com/junit/ "junit tutorials") 是 Java 编程语言的单元测试框架。 如果您想阅读有关[**最佳实践**](//howtodoinjava.com/category/best-practices/ "best practices guides")的信息，以进行 junit 测试，那么这里是一份出色的[**指南**](//howtodoinjava.com/best-practices/unit-testing-best-practices-junit-reference-guide/ "Unit testing best practices : Junit Reference guide")供您参考。

在本文中，我正在写有关编写 junit 测试用例的信息，这些用例仅在运行时满足特定条件时才能运行。 例如，我只想在其他网络服务启动时才运行测试用例。 如果服务中断，我不想通过测试。

在 junit 中，可以使用“[**`org.junit.Assume`**](http://junit.sourceforge.net/javadoc/org/junit/Assume.html "junit assume")”进行上述操作。 以下是示例用法：

```java
@Test
public void testIfVersioonGreaterThan4()
{
	String versionNumber = "7"; //Get it from configuration on runtime
	Assume.assumeTrue(Integer.valueOf(versionNumber) == 7);
	System.out.println("Test executed");
}

```

仅当应用版本大于 7 时，以上测试用例才会执行。它实际上是一个很棒的功能，使我们能够编写功能特定的测试用例而不必担心。

当执行上述测试用例时，如果应用版本大于 7 或小于 7，则仅使用[**`@Ignore`**](http://junit.sourceforge.net/javadoc/org/junit/Ignore.html "Ignore annotation")注解而忽略测试用例。 某些 IDE 可能显示出它们执行了测试用例，但实际上并没有执行而只是被忽略了。 您可以通过查看日志进行验证。

如果要忽略单个 java 类中的所有测试用例，则可以在带注解的`@Before`方法中使用它。 所有测试用例都将以这种方式被忽略。

```java
package com.howtodoinjava.test.junit;

import org.junit.Assume;
import org.junit.Before;
import org.junit.Test;

public class JunitAssumptionTest {

	@Before
	public void setUp() {
		String versionNumber = "7"; //Get it from configuration on runtime
		Assume.assumeTrue(Integer.valueOf(versionNumber) == 7);
	}

	@Test
	public void testIfVersioonGreaterThan4()
	{
		System.out.println("Test executed");
	}

}

```

**基于假设的测试用例在以下情况下很有用：**

*   针对特定应用版本运行测试用例
*   仅在某些网络资源（或任何外部服务）可用时运行测试用例
*   仅在特定语言环境中运行测试用例
*   仅在特定执行环境下运行测试用例

根据需要，可能还有其他情况。 让我知道你有什么问题吗？

**祝您学习愉快！**