JUnit从另一个类

时间:2018-04-23 15:20:43

标签: java unit-testing junit

快速查看过去的问题,看不到类似的东西,所以这里有:

我在为这个例子选择虚拟名称时也犯了一个错误,以说明我的观点,我会重命名它们。

我有一个有JUnit测试的类:

public class CheckFilter {
    @Test
    public void Run_filter_test() {
        //some code
    } 
}

然后是另一个班级:

public class CheckVideoPlays {
    @Test
    public void Play_video_in_full() {
        //some more code here etc
    } 
}

最后,我如何从另一个类调用这两个测试,显然你不能扩展多个类。

public class RunAllTests { 
    //How do i call both
    //eg
    //
    //Run_filter_test();
    //Play_video_in_full();
}

注意:我不想打电话给班级。不想以:

运行
  

@RunWith(Suite.class)

     

@ Suite.SuiteClasses({

     

CheckFilter.class,

     

CheckVideoPlays.class

     

})

2 个答案:

答案 0 :(得分:1)

一些事情。

  1. Sanatize_all_inputs的名称更改为(java标准格式)驼峰案例,可能是sanitizeAllImports。使用Java时,请遵守Java。
  2. 您似乎每次测试都会清理输入一次, 对我来说,这表示你想在jUnit测试类中使用类型为ConvertAll的类级变量。
  3. 使用合成(类型BaseTestBlammy的另一个类级别变量)或继承(扩展类BaseTestBlammy)来获取对BaseTestBlammy方法的访问权。
  4. 以下是一个例子:

    public MyJunitTestKapow
    extends BaseTestBlammy
    {
        private final ConvertAll convertAll;
    
        public MyJunitTestKapow()
        {
            convertAll = new ConvertAll();
        }
    
        @Test
        public void someTest()
        {
            convertAll.sanitizeAllInputs(...);
    
            ... // do the rest of the test here.
        }
    }
    

答案 1 :(得分:0)

您可以在ConvertAll.sanitize中创建静态方法,然后在ConvertAll.Sanitise_all_inputs测试和CheckFilter.Run_filter_test

中调用此方法

作为更好(更易维护和更强大)的解决方案,您可以使用Sanitiser方法创建sanitise()类(方法可以是静态的或不是静态的)。然后,每个需要清理功能的类都会调用Sanitiser.sanitise。从长远来看,这个解决方案可能会更好 - 你可以将参数传递给消毒方法(或者去杀毒者构造函数),杀菌者可能有一些内部状态等等。

附注:您可以考虑迁移到Junit5(基本上只是更改导入的包)。 Junit5有@DisplayName注释,声明了很好的测试方法名称(带空格)。因此,您的测试方法将遵循Java命名约定。

@Test
@DiplayName("Sanitize all inputs")
public void sanitiseAllInputs() {
    //some more code here etc
}