有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

JUnit如何测试这些小型序列化和json函数?在Android中,Java

我已经学会了如何在Android中进行基本的单元测试,例如获取和设置下面的方法等。但是当涉及到更复杂的事情,比如下面的实际代码时,我有点不知所措

public class SurveyTest extends TestCase {

private Survey survey;

    protected void setUp() throws Exception {
    super.setUp();  
    survey = new Survey();
}

public void testGetId() {
    long expected = (long) Math.random();
    survey.setId(expected);
    long actual = survey.getId();
    Assert.assertEquals(expected, actual);
}

public void testGetTitle() {
    String expected = "surveytitle";
    survey.setTitle(expected);
    String actual = survey.getTitle();
    Assert.assertEquals(expected, actual);  
}

我的小代码被困在如何以上述格式进行Junit测试上:

public abstract class PrimaryModel extends Observable implements Serializable{
    protected void notifyModelChange()
    {
        setChanged();
        notifyObservers();
    }

    public String serialize() throws IOException
    {
        ObjectOutputStream objOutStream = null;
        ByteArrayOutputStream bytArrOutStream = null;
        try
        {
            bytArrOutStream = new ByteArrayOutputStream();
            objOutStream = new ObjectOutputStream(bytArrOutStream);
            objOutStream.writeObject(this);
        }
        finally
        {
            String main = new String(bytArrOutStream.toByteArray());
            objOutStream.close();
            bytArrOutStream.close();
            return main;
        }
    }

    public static PrimaryModel deserialize(String data) throws IOException, ClassNotFoundException
    {
        ObjectInputStream objInputStream = new ObjectInputStream(new ByteArrayInputStream(data.getBytes()));
        PrimaryModel obj  = (PrimaryModel) objInputStream.readObject();
        objInputStream.close();
        return obj;
    }
    }

共 (1) 个答案

  1. # 1 楼答案

    像序列化/反序列化方法对这样的东西通常很容易测试。您需要知道往返返回的对象与原始对象等效

    private static class PrimaryModelSubclass extends PrimaryModel {
        /* add methods as needed */
    }
    final PrimaryModel original = new PrimaryModelSubclass(7, "some string", 43.7);
    final PrimaryModel wellTravelled = PrimaryModel.deserialize(original.serialize());
    
        assertEquals(original, wellTravelled);
    

    您还需要正确定义hashCode和equals方法

    根据评论更新