我正在尝试对tic tac toe board进行一些Junit测试。我知道如何一次测试一个函数,但我的问题是,为了检查一些函数,必须调用以前的函数。
例如,为了检查获胜者,您必须多次调用函数“PlaceMarker”函数。我正在检查的具体问题是确保bool函数“CheckSpace”在其检查点已有标记时返回false。我目前有
public class TestGame {
private GameBoard board;
@Before
public void setUp() {board = new GameBoard();}
@After
public void tearDown() {board = null;}
@Test
public void testRewritingOverSpace() {
assertEquals("Placing (1, 1), then checking space (1, 1)", false,
board.placeMarker(new BoardPosition(1, 1, 'X')),
board.checkSpace(new BoardPosition(1, 1, 'O'));
这给了我一个错误。简而言之,您如何制作一个JUnit测试用例,您必须在其中调用多个函数。
答案 0 :(得分:1)
回答这个问题:你一步一步走。特别是当您考虑TDD时,您的工作方式如下:
是的,这可能意味着您的代码如下:
var node = g.selectAll(".node")
.data(root.descendants())
.enter().append("g")
.attr("class", function(d) { return "node" + (d.children ? " node--internal" : " node--leaf"); })
.attr("transform", function(d) { return "translate(" + d.y + "," + d.x + ")"; })
//attach a click listener to the group
.on("click", function(d){
var children = [];
//recursively call parent
var recurse = function(c){
//recurse unless no parent is found
if (c.parent){
children.push(c.parent.id);
recurse(c.parent)
}
}
recurse(d)//call recurse on clicked node
console.log(children)
//send children to server via AJAX
})
您可能会发现您之后的测试用例实际上是测试 / 验证行为,这些行为已经在您之前编写的测试中涵盖过。然后你可以退一步问自己:“保留这个早期的测试是否有一些优点 - 或者我可以安全地将它们丢弃吗?”
你是对的,这里需要平衡:进行多次相同/类似事情的测试会导致“重复”。另一方面 - 您拥有的测试越多,您就越容易在这里和那里更换小东西 - 然后立即收到反馈。
因此:对此没有单一答案。这完全取决于背景和工程判断。