目前我正在学习FitNesse。我在一个测试页面中有两个不同的测试表,并希望在我的“InventoryFixture”表中添加/删除数量。
我的问题是我无法使用“myInventory”对象从“InventoryFixture”表中获取数量的值。我的目标是确保每次使用相同的对象并引用“InventoryFixture”类。
我在开发中使用java并扩展了ColumnFixture。
在“AddRemoveItemFixture”类中,我获取新项目并将其添加到“InventoryFixture”类中的数量。
似乎我错过了什么,谁能告诉我什么?
it seems I'm missing something, can anyone tell me what?
这是我的所有java代码:
package fitNesseExample;
import fit.ColumnFixture;
public class InventoryFixture extends ColumnFixture{
private int quantity;
private int partNumber;
public int getQuantity(){
return quantity;
}
public void setQuantity(int quantity){
this.quantity = quantity;
}
public int getPartNumber() {
return partNumber;
}
public void setPartNumber(int partNumber) {
this.partNumber = partNumber;
}
public boolean valid(){
if(quantity>0){
return true;
}else{
return false;
}
}
public int addQuantities(int item){
int items = item;
return items;
}
}
在这个类中,我按函数addItems()添加新项,这就是问题所在。 myInventory.getQuantity()返回[0]而不是[28],因此总项目为(0 + 5 = 5)NOT(28 + 5 = 33)。
package fitNesseExample;
import fit.ColumnFixture;
public class AddRemoveItemFixture extends ColumnFixture{
public int partNumber;
public int newItems;
public InventoryFixture myInventory;
public void setNewItems(int newItems){
this.newItems = newItems;
}
public void setPartNumber(int partNumber) {
this.partNumber = partNumber;
}
public int addItems(){
myInventory = StaticInventory.getMyInventory();
int totalItems = myInventory.addQuantities(myInventory.getQuantity() + newItems);
myInventory.setQuantity(totalItems);
return myInventory.getQuantity();
}
}
我将类InventoryFixture实例化为:
package fitNesseExample;
import fit.ColumnFixture;
public abstract class StaticInventory extends ColumnFixture{
public static InventoryFixture myInventory;
public static InventoryFixture getMyInventory(){
if(myInventory == null) myInventory = new InventoryFixture();
return myInventory;
}
}
答案 0 :(得分:0)
问题是第一个FitNesse表创建了InventoryFixture
的新实例,它与静态myInventory
不是同一个实例。因此第一个表格不会更新myInventory
。
答案 1 :(得分:0)
我希望你知道为什么myInventory.getQuantity()
会回来5,因为当你说的时候
myInventory = StaticInventory.getMyInventory();
它创建一个新实例并为其成员分配默认值。
如果你想在灯具之间传输数据,那么在执行第一个表时使用doFixture并将数据保存在某个全局变量中,并在第二个表执行中从该全局变量重用。
您可能想要从叔叔鲍勃的页面阅读有关doFixture的内容 http://butunclebob.com/FitNesse.UserGuide.FitLibraryUserGuide.DoFixture
请记住,您可以从doFixture返回一个装置,这样您就可以使用它做任何事情。
理想情况下,您应将之前的值(在本例中为数量28,1)传递给新的灯具并返回添加的值。这将有助于了解业务利益相关者以及看起来干净。