有些测试的Junit Automation测试需要许多不同的输入

时间:2018-02-15 00:10:54

标签: java junit

我是Junit的新手,我目前正在尝试测试一些与简单用户界面相对应的API,其中包含许多复选框和几个文本字段。

我现在想到的是用以下结构写一些东西:

  

testButtonOne()

     

testButtonTwo()

     

。 。

     

testButtonTen()

     

testCheckboxOne()包含许多输入,例如空格,无效字符,非常长的字符串等

     

testCheckboxTwo()包含许多输入,例如空格,无效字符,非常长的字符串等

我试图在两个文件中编写测试,一个是单个运行,一个是参数化运行,但问题是我必须写@BeforeClass @Before @After两次,所以我想知道什么会更好这样写测试的方法。

2 个答案:

答案 0 :(得分:1)

你应该使用其中之一 https://github.com/junit-team/junit4/wiki/parameterized-tests

或者更好,我认为你应该看看 https://github.com/pholser/junit-quickcheck

使用junit-quickcheck的示例项目 看到这个例子github项目 https://github.com/bfayette/lottery/blob/master/src/test/java/com/silanis/lottery/PrizeCalculatorTest.java

答案 1 :(得分:0)

您可以在此处查看:Testing GUI with JUnit

主要思想是,最好将GUI与业务逻辑和其他层分离。通过这种方式,GUI层将仅包含GUI特定代码,因此测试将变得更容易,并且它的价值将降低。这样你就可以在GUI类中模拟你的服务,并且只是验证,例如,如果你在EditBox中输入一些文本,它的值将作为特定服务调用的参数(在这种情况下,我不会这样做)。你认为你需要编写参数化单元测试),然后你可以分别测试服务层。您可以获得验证服务,也可以单独测试。使用这种方法测试通常会变得更清晰,更具体,而不是那么广泛,这就是单元测试背后的想法。

如果仍需要用于测试GUI的参数化单元测试,则可以同时进行参数化和非参数化测试,并按照此处所述的一个测试类的嵌套类进行分组:https://stackoverflow.com/a/28203229/9329760