Android 如何为移动应用程序自动验证omniture事件?
我有一个iOS和android应用程序,可以触发omniture事件。我通过Charles代理捕获这些事件并手动验证这些事件。手动验证需要很多时间。有没有办法自动验证omniture事件?这可能会帮我节省很多时间Android 如何为移动应用程序自动验证omniture事件?,android,ios,adobe-analytics,charles-proxy,Android,Ios,Adobe Analytics,Charles Proxy,我有一个iOS和android应用程序,可以触发omniture事件。我通过Charles代理捕获这些事件并手动验证这些事件。手动验证需要很多时间。有没有办法自动验证omniture事件?这可能会帮我节省很多时间 提前感谢之前将Omniture集成到Android应用程序中,我感觉到了你的痛苦 Adobe有一个名为“猎犬”的工具,你可以使用它作为一个假的Omniture服务器 虽然它对自动化没有帮助,但对调试也有帮助,因为它为您分解了evals、vars和events。如果您在ADMS_度量和应
提前感谢之前将Omniture集成到Android应用程序中,我感觉到了你的痛苦 Adobe有一个名为“猎犬”的工具,你可以使用它作为一个假的Omniture服务器
虽然它对自动化没有帮助,但对调试也有帮助,因为它为您分解了evals、vars和events。如果您在ADMS_度量和应用程序之间添加一些对象作为抽象层,它可以用来验证您希望在测试中发送的所有事件(您需要对此解决方案进行测试)。或者,您可以尝试模拟ADMS_测量对象,但我从未尝试过这种方法。给定对象的结构如下
@implementation OmnitureWrapper ()
@property (nonatomic, strong) ADMS_Measurement *admsMeasurement;
- (void)track:(NSDictionary *)trackingVars {
[self setupVariables:trackingVars];
[self.admsMeasurement track];
}
@end
在测试中,您可以创建OmnitureLayer的模拟,并使其期望调用-(void)track:(NSDictionary*)trackingVars,并验证参数是否符合预期。例如,使用OCMock:
- (void)testActionXShouldSendOmnitureEventsY {
id omnitureMock = [OCMockObject mockForClass:[OmnitureWrapper class]];
[omnitureMock expect] track:[OCMArg checkWithBlock:^BOOL(id obj) {
NSDictionary *trackingVars = (NSDictionary *)obj;
//TODO check if all vars are as expected
}];
//TODO actual test code
[omnitureMock verify];
}
您需要为每个会导致Omniture跟踪的事件编写测试,然后验证是否正确调用了它,但是,如果这对您很重要,那么从长远来看,它可能会有回报。我找到的唯一可靠的方法是在测试运行期间向设备/模拟器上的临时目录发送请求之前,从Adobe SDK中转换事件数据。然后您的测试可以访问此文件并在测试脚本中断言其数据