Java泛型测试类
我是泛型新手,我必须使用泛型实现一个二进制搜索树。我这样做了,但现在我想知道我该如何测试我编写的代码?我是否只是创建另一个类并开始使用bst的方法 任何帮助都将不胜感激。下面是我的代码,只是想澄清一下Java泛型测试类,java,generics,binary-search-tree,Java,Generics,Binary Search Tree,我是泛型新手,我必须使用泛型实现一个二进制搜索树。我这样做了,但现在我想知道我该如何测试我编写的代码?我是否只是创建另一个类并开始使用bst的方法 任何帮助都将不胜感激。下面是我的代码,只是想澄清一下 public class BST<E extends Comparable<E>> { public Node<E> root; public BST() { root = null; } //insert delete find height pu
public class BST<E extends Comparable<E>>
{
public Node<E> root;
public BST()
{
root = null;
}
//insert delete find height
public void find(E s, Node<E> n)
{
//empty tree, root is null
if(n == null)
{
System.out.println("Item not present.");
}
//n is the node where s is, return n
else if(n.getData().equals(s))
{
System.out.println("Item present");
}
//s is greater than n, look for s on the right subtree
else if(s.compareTo(n.getData()) > 0)
{
find(s, n.getRight());
}
//s is less than n, look for s on the left subtree
else
{
find(s, n.getLeft());
}
}
public int height()
{
int count;
return count = height(root);
}
private int height(Node<E> n)
{
int ct = 0;
if(n == null)
{
}
else
{
int left = height(n.getLeft());
int right = height(n.getRight());
ct = Math.max(left, right) + 1;
}
return ct;
}
public void insert(E s)
{
root = insert(s, root);
}
private Node<E> insert(E s, Node<E> T)
{
//easiest case, empty tree, create new tree
if(T == null)
{
T = new Node<E>(s,null,null);
}
//easiest case, found s
else if(s.compareTo(T.getData()) == 0)
{
System.out.println("Item already present.");
}
//s is greater than T, insert on right subtree
else if(s.compareTo(T.getData()) > 0)
{
T.setRight(insert(s, T.getRight()));
}
//s is less than T, insert on left subtree
else
{
T.setLeft(insert(s,T.getLeft()));
}
return T;
}
public void delete(E d)
{
}
}
但是当我编译时,我得到了一个意外类型的错误,它说如果找到了一个int,但需要在BST myTree=new BST()行上引用;这意味着什么?是的,创建一个名为bstest的类,并创建方法来测试BST中的每个公共方法 如果使用JUnit,则可以使用注释和标准命名约定
public class BSTTest {
@Test
public void testInsert() {
BST<String> bst = new BST<String>();
String s = "hello";
bst.insert(s);
AssertTrue("I should get back what I put in!", bst.find(s));
}
@Test
public void testDelete() {
// etc...
}
公共类测试{
@试验
公共无效测试集(){
BST BST=新的BST();
字符串s=“hello”;
bst.insert(s);
AssertTrue(“我应该拿回我放进去的东西!”,bst.find(s));
}
@试验
公共void testDelete(){
//等等。。。
}
}
}
然后,您可以在java IDE(如IntelliJ IDEA)中运行这个“单元测试”,或者,如果您已经设置好了,可以通过maven:mvn测试
另外,我认为您的find()
方法可以返回布尔值
祝你好运 你可以做你建议的事情或者使用单元测试。
BST
不能保留它的不变量,只要节点的setter是公共的
。为了获得最佳结果,请使用E extensed comparablei我正试图按照你说的做,这是我的测试类公共类bstest{public void testInsert(){int height;BST myTree=new BST();myTree.insert(1);}}但是当我编译时,我得到了一个意外类型的错误,它说如果找到了一个int,但需要在BST myTree=new BST()行上引用;这意味着什么?试试BST myTree=new BST();
…这是怎么回事?
public class BSTTest {
@Test
public void testInsert() {
BST<String> bst = new BST<String>();
String s = "hello";
bst.insert(s);
AssertTrue("I should get back what I put in!", bst.find(s));
}
@Test
public void testDelete() {
// etc...
}