Ale*_*der 5 java junit unit-testing
我甚至有多个测试用例,如果逻辑不同,输出必须在所有测试用例上相等.所以我在思考如何概括它们并仅将Assert方法放置一次.
有没有比这个更好的方法:
static public class Tests() {
private static String expected = null;
private String actual = null;
@BeforeClass
public static void setUpBeforeClass() throws Exception {
expected = new String("My Desired Output");
}
@Before
public void setUp() {
actual = new String();
}
@Test
public void test1() throws Exception {
actual = ...
}
@Test
public void test2() throws Exception {
actual = ...
}
@After
public void tearDown() throws Exception {
assertThat(actual, is(equalTo(expected)));
}
@AfterClass
public static void tearDownAfterClass() {
}
}
Run Code Online (Sandbox Code Playgroud)
运行方式:
@Test
public void runTests() {
Result result = JUnitCore.runClasses(Tests.class);
assertThat(result.getRunCount(), is(2));
assertThat(result.getFailureCount(), is(0));
}
Run Code Online (Sandbox Code Playgroud)
是的,在tearDown方法中断言是个坏主意.根据JUnit文档,此方法存在
例如,撕下夹具,关闭网络连接.执行测试后调用此方法.
我认为在测试类中存储您的预期值和实际值通常是个坏主意.这些变量与测试有关,因此将它们存储在测试用例中并在测试用例中执行断言.例如:
public class FooTest {
@Test
public void testFoo() {
Object expected = // ...
Object actual = // ...
assertThat(actual, is(equalsTo(expected)));
}
}
Run Code Online (Sandbox Code Playgroud)
此外,我在您的代码中看到所有测试都具有相同的预期值.改变测试可能是个好主意,因此返回的值总是不同的.一直只测试一个预期值,确保代码适用于此预期结果.尝试更多,可能非常不同,并尝试测试一些角落案例.
如果您必须概括,那么您可以创建一种方法,例如
private void testIt ( String actual ) {
assertThat(actual, is(equalTo(expected)));
}
Run Code Online (Sandbox Code Playgroud)
并从所有测试方法中调用它。
如果测试失败以及何时失败,哪个测试失败将更加明显。
| 归档时间: |
|
| 查看次数: |
3790 次 |
| 最近记录: |