我相信我不是唯一一个面临这个问题的人,但到目前为止我无法找到解决办法.问题如下.
我从遗留系统发布了一个Web服务(我没有任何控制权,我无法更改它),并且所有客户端都在使用它.我收到来自Web服务和对象的请求,我得到的是一个非常复杂的请求但是为了举例说明我从Web服务调用接收对象A,其中包含其他几个对象,如对象B,对象C等等.另外,对象B和C也有一些原始数据类型以及其中的一些其他对象.我的问题是我要验证整个对象A(所有包括对象和子对象),这里推荐哪种设计模式?其次,这里的要点是我可以从Web服务获得不同类型的对象A. 我不同类型的对象A的真正含义是对象A依赖于客户端,即一些客户端将发送对象A而不填充包含对象B中的数据,或者甚至可以部分填充对象B然后在对象A中发送它所以我必须基于客户端验证对象A(因为一些客户端需要包含对象B,有些不会,有些将需要对象B中的少量元素等).所以换句话说,我将有一个地方,我也将存储每个客户端的验证规则,这将告诉我这样的事情,客户端ABC希望对象B中的字段abc是字符串类型,最大长度是25个字符,它必须在该字段中包含数据.
我想要执行的一些验证是
检查某些对象的字段(比如对象B)的数据类型,特定字段的长度,是该客户端所需的字段,还是可选的等等...
任何具体的工作示例都非常有用.
该特定示例的对象A的结构如下.
public class A
{
private B objectB;
private C objectC;
// and so on
}
public class B{
private E objectE;
private String name;
private int age;
// and so on
}
public class C
{
private F objectF;
private String address;
private String country;
}
public class E
{
// Members here
}
public class F
{
// Members here
}
Run Code Online (Sandbox Code Playgroud)
PS:我给了班级和成员任意的名字只是为了一般的理解.是的,我忘了提到我在这里使用java,但它并不重要,因为设计原则或模式可以应用于任何语言.希望很快能听到你们的意见.. :)
我是单元测试的新手.我正在使用TestNG和MyEclipse为我的应用程序开发单元测试用例.在这样做时,我遇到了EasyMock的一些问题.这是我的代码(出于安全原因,类的名称,方法名称和返回类型已更改,但您将清楚地了解我在此处尝试实现的目标).
public MyClass
{
// This is a method in my class which calls a collaborator which I
// want to mock in my test case
public SomeObject findSomething(SomeOtherObject param) throws Exception
{
SomeOtherObject param a = myCollaborator.doSomething(param);
// Do something with the object and then return it
return a;
}
}
Run Code Online (Sandbox Code Playgroud)
现在这是我的考试.现在我在测试用例中实际想要实现的是,我想检查我的函数(findSomething)是否正确抛出异常,以防抛出异常.将来,其他一些开发人员可以更改方法的签名(抛出异常不是方法签名的一部分),并从我的方法中删除抛出异常.那么我怎样才能确保没人改变呢?
@Test(dataProvider="mydataProvider", expectedExceptions=Exception.class)
public void MyTest(SomeOtherObject param) throws Exception {
{
EasyMock.expect(myCollaboratorMock.doSomething(param)).andThrow(new Exception());
EasyMock.replay(myCollaboratorMock);
}
Run Code Online (Sandbox Code Playgroud)
我越来越异常了
"java.lang.IllegalArgumentException:在mock上调用的最后一个方法不能抛出java.lang.Exception"
我在这做错了什么?有人可以阐明如何为我的特定场景编写测试用例吗?