@Before 需要JUnit测试中的符号,因为几个测试需要在运行之前创建类似的对象.
但是我没有区分在将testcase函数作为全局对象之前实例化一个对象和放入一个对象之间@Before.
例如,我正在测试我的国际象棋程序,我正在测试我的Piece对象是否移动到正确的位置:
public class PawnTest { //The Test Class itself
Board board = new Board();
@Test
/**
* Testing the right movement
*/
public void correctMovementTest() {
Pawn p1 = new Pawn(Player.UP);
board.placePiece(4, 3, p1);
board.movePieceTo(5, 3, p1);
assertEquals(board.getPiece(5, 3), p1);
}
@Test
/**
* Testing the right movement
*/
public void correctMovementTest2() {
Pawn p1 = new Pawn(Player.UP);
board.placePiece(4, 3, p1);
board.movePieceTo(6, 3, p1);
assertEquals(board.getPiece(6, 3), p1);
}
....
Run Code Online (Sandbox Code Playgroud)
如果我在测试用例方法之外进行decalre Board,那么它不会起作用Pawn p1吗?我们为什么需要@Before在测试课上?
此外,这样做是行不通的
@Before
public void setup() {
Board board = new Board();
Pawn p1 = new Pawn(Player.UP);
}
Run Code Online (Sandbox Code Playgroud)
我认为这实际上会在测试用例之前设置对象,这样我就不必在每个测试用例中设置它们,但测试用例实际上不会读取p1对象和板.
@Before在您的类中执行每个测试用例之前,注释用于执行某些操作.所以,基本上你是在正确的方式.为了使你的代码工作,你需要声明你Board和Pawn功能范围之外.
Board board = null;
Pawn p1 = null;
@Before
public void setup() {
board = new Board();
p1 = new Pawn(Player.UP);
}
Run Code Online (Sandbox Code Playgroud)
还有一个@BeforeClass注解可用执行一次整个测试套件前执行一些动作-例如启动嵌入式数据库.希望能帮助到你!
| 归档时间: |
|
| 查看次数: |
3505 次 |
| 最近记录: |