当前位置: 首页 > 知识库问答 >
问题:

使用套件进行JUnit合同测试

公冶元青
2023-03-14
public interface UserRepository {

    Set<User> search(String query);

    Set<User> findBySomethingSpecific(String criteria1, Integer criteria2);
}
public abstract UserRepositoryTest {

    private UserRepository userRepository;

    @Before
    public void setUp() {
        userRepository = createUserRepository();
    }

    @Test public void aTestForSearch() { ... }
    @Test public void anotherTestForSearch() { ... }

    @Test public void aTestForSomethingSpecific() { ... }
    @Test public void anotherTestForSomethingSpecific() { ... }

    protected abstract UserRepository createUserRepository();
}

//------------------------

public class UserRepositoryImplementationTest extends UserRepositoryTest {

    @Override
    protected UserRepository createUserRepository() {
         return new UserRepositoryImplementation();
    }
}

共有1个答案

施俊明
2023-03-14

在JUnit4中,您可以创建如下所示的套件:

import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;

@RunWith(Suite.class)
@Suite.SuiteClasses({
  TestFeatureLogin.class,
  TestFeatureLogout.class,
  TestFeatureNavigate.class,
  TestFeatureUpdate.class
})

/**
 * 
 * This suite will execute TestFeatureLogin,TestFeatureLogout,TestFeatureNavigate and TestFeatureUpdate one after the over.
 * 
 * @Before, @After and @Test are no possible of executing in this class.
 * @BeforeClas and @AfterClass are allowed only.  
 * 
 * */
public class FeatureTestSuite {
    // the class remains empty of test,although it is possible set up a before class and after class annotations.
    // used only as a holder for the above annotations

    @BeforeClass
    static public void beforeClass(){
        System.out.println(FeatureTestSuite.class.toString() + " BeforeClass Method");
    }

    @AfterClass
    static public void AfterClass(){
        System.out.println(FeatureTestSuite.class.toString() + " AfterClass Method");
    }   
}

完整的示例可以在这里找到

您必须考虑的另一件事是@Test不是抽象类中单元测试的好实践。如果您想测试您的实现,请创建扩展抽象类的测试类。

 类似资料:
  • 我正在尝试使用Zerocode使用Junit(4)运行负载测试。通过遵循这些教程,我能够运行现有的Junit测试类 使用零代码框架使用JUnit进行负载测试 我有一个Junit测试套件可以正常工作,我想知道如何使用zerocode来启动这个测试套件,以便它可以运行负载测试所有测试类中的所有测试。上面的例子描述了如何运行选定的测试方法,或者只运行少数测试方法。

  • 我已经编写了一个JUnit测试套件,用于运行多个测试用例。 现在我想一次运行我的测试套件类(AllTest.java),以便所有测试都由一个类触发、执行和管理。我知道maven故障保护插件是可用的,但是有没有其他更简单的方法从maven调用JUnit测试套件呢? 我不想使用另一个插件。 这是我当前的maven-故障安全-插件配置:

  • ...还有一个很简单的测试... 如果我在IntelliJ中运行这个,测试就会运行并失败。 如果我提交这个项目并将其推送到github,TeamCity会看到变化并开始构建。生成会很快失败,出现以下错误:

  • 问题内容: 如何使用JUnit 4创建测试套件? 我看过的所有文档似乎都不适合我。而且,如果我使用Eclipse向导,它不会为我提供选择已创建的任何测试类的选项。 问题答案:

  • 我有这个过滤器类,在使用junit进行测试时需要尽可能高的代码覆盖率。 和测试等级: 当我运行时,它在 线 我如何避免这种情况? 我需要调用这个方法并执行里面的任何内容来提供所需的代码覆盖。

  • 问题内容: 如何从命令行运行Junit 4.8.1测试套件?另外,我想使用JUnit 4.8引入的类别,有没有一种方法可以从命令行指定要运行的类别。 问题答案: 从4.8开始,无法从命令行指定类别。