原文: https://howtodoinjava.com/junit/assumption-based-testcases-in-junit-4/

    Junit 是 Java 编程语言的单元测试框架。 如果您想阅读有关最佳实践的信息,以进行 junit 测试,那么这里是一份出色的指南供您参考。

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

    在 junit 中,可以使用“org.junit.Assume”进行上述操作。 以下是示例用法:

    1. @Test
    2. public void testIfVersioonGreaterThan4()
    3. {
    4. String versionNumber = "7"; //Get it from configuration on runtime
    5. Assume.assumeTrue(Integer.valueOf(versionNumber) == 7);
    6. System.out.println("Test executed");
    7. }

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

    当执行上述测试用例时,如果应用版本大于 7 或小于 7,则仅使用@Ignore注解而忽略测试用例。 某些 IDE 可能显示出它们执行了测试用例,但实际上并没有执行而只是被忽略了。 您可以通过查看日志进行验证。

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

    1. package com.howtodoinjava.test.junit;
    2. import org.junit.Assume;
    3. import org.junit.Before;
    4. import org.junit.Test;
    5. public class JunitAssumptionTest {
    6. @Before
    7. public void setUp() {
    8. String versionNumber = "7"; //Get it from configuration on runtime
    9. Assume.assumeTrue(Integer.valueOf(versionNumber) == 7);
    10. }
    11. @Test
    12. public void testIfVersioonGreaterThan4()
    13. {
    14. System.out.println("Test executed");
    15. }
    16. }

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

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

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

    祝您学习愉快!