在Android Studio 2.2中应该有一个测试录音功能?我在哪里找到它以及如何使用它?
android automated-tests android-espresso android-studio-2.2 android-espresso-recorder
题
你会如何为游戏添加自动化测试?
我相信你可以对很多游戏引擎的功能(网络,对象创建,内存管理等)进行单元测试,但是有可能自动测试实际的游戏本身吗?
我不是在谈论游戏元素(比如Protoss会在地图X中击败Zerg),但我在谈论游戏和引擎之间的互动.
介绍
在游戏开发中,引擎只是游戏的平台.您可以将游戏引擎视为操作系统,将游戏视为操作系统运行的软件.游戏可以是游戏引擎内的脚本集合或实际子程序.
可能的答案
我的想法是这样的:
你需要一个确定性的引擎.这意味着给定一组输入,输出将完全相同.这将包括用相同输入播种的随机发生器.
然后,创建一个裸骨水平,其中包含化身/用户可以与之交互的几个对象.从小处开始,然后在开发更多交互时将对象添加到关卡中.
创建一个遵循路径的脚本(测试路径查找)并与不同的对象交互(存储结果或预期的行为).这个脚本将是您的自动化测试.经过一段时间(比如一周)后,运行脚本以及引擎的单元测试.
最近我们一直在为现有的Java应用程序添加自动化测试.
我们有什么
这些测试中的大部分都是集成测试,可能会覆盖一堆调用,如: -
然后,我们验证servlet是否使用正确的XML进行响应,并且数据库中存在正确的行(我们的开发Oracle实例).然后删除这些行.
我们还有一些较小的单元测试,用于检查单个方法调用.
这些测试都是我们夜间(或adhoc)构建的一部分.
问题
这似乎很好,因为我们正在检查系统的边界:一端是servlet请求/响应,另一端是数据库.如果这些工作正常,那么我们就可以自由地重构或混淆其中的任何东西,并且有信心被测试的servlet继续工作.
我们可能会遇到哪些问题?
我看不出如何在单个类上添加更多单元测试会有所帮助.难道这不会让重构变得更难,因为我们更有可能需要抛弃并重新编写测试吗?
考虑以下示例Javascript代码:
function privateFunction (time) {
if (time < 12) { console.log('Good morning'); }
if (time >= 12 && time <19) { console.log('Good afternoon'); }
else { console.log('Good night!'); }
};
Run Code Online (Sandbox Code Playgroud)
我应该如何使用mocha(也可能是sinonjs)对nodejs进行单元测试,注意到这是一个在模块内部调用的私有函数?我需要传入参数并检查函数是否正在将正确的东西记录到控制台.
我可以用console.warn和console.error吗?
我正在使用GNU autotools来构建特定项目的构建系统.我想开始为验证编写自动化测试.我想输入"make check"让它自动运行这些.我的项目是用C++编写的,虽然我仍然对为其他语言编写自动化测试感到好奇.
这几乎与每个单元测试框架兼容(我在考虑使用cppunit)吗?如何将这些单元测试框架挂钩到make check中?我是否可以确保不需要安装单元测试软件来配置和构建项目的其余部分?
当要依赖的测试与具有此注释的测试的类相同时,注释的dependsOnMethods属性@Test可以正常工作.但是,如果待测试方法和依赖方法属于不同的类,则它不起作用.示例如下:
class c1 {
@Test
public void verifyConfig() {
//verify some test config parameters
}
}
class c2 {
@Test(dependsOnMethods={"c1.verifyConfig"})
public void dotest() {
//Actual test
}
}
Run Code Online (Sandbox Code Playgroud)
有没有办法解决这个限制?一个简单的方法是在class c2该调用中创建一个测试c1.verifyConfig().但这将是太多的重复.
我正在使用Jenkins,Python,Selenium2(webdriver)和Py.test框架为Web测试创建测试用例.
到目前为止,我正在组织以下结构的测试:
每个类都是测试用例,每个test_方法都是一个测试步骤.
当一切正常时,这个设置很有效,但当一步崩溃时,其余的"测试步骤"变得疯狂.我可以借助于包含类(测试用例)中的失败teardown_class(),但是我正在研究如何改进它.
我需要的是以某种方式跳过(或xfail)test_一个类中的其余方法,如果其中一个失败,那么其余的测试用例不会运行并标记为FAILED(因为这将是误报)
谢谢!
更新:我不是在寻找或回答"这是不好的做法",因为这样称呼它是非常有争议的.(每个测试类都是独立的 - 这应该足够了).
更新2:在每个测试方法中放置"if"条件不是一个选项 - 是很多重复工作.我正在寻找的是(也许)有人知道如何使用类方法的钩子.
我正在构建一个Android应用程序,它使用Firebase作为后端和模型,视图,演示者架构.但是,Firebase是一项云服务这一事实使我的Android应用程序中的自动化测试变得复杂.到目前为止,我已经构建了大部分身份验证系统,但我无法看到如何在我的应用中为Firebase代码实现单元测试.在端到端测试方面,我也陷入困境.
由于测试是任何Android应用程序的基础,没有它应用程序开发人员无法确定他们已实现的功能是否按预期运行,如果没有自动化测试,我无法真正进一步发展.
总之,我的问题是:
通常,如何在Android应用程序中实现Firebase自动化测试?
编辑:
作为一个例子,有人可以单独测试以下方法吗?
public void addUser(final String name, final String birthday,
final String email, final String password) {
Firebase mUsersNode = Constants.mRef.child("users");
final Firebase mSingleUser = mUsersNode.child(name);
mSingleUser.runTransaction(new Transaction.Handler() {
@Override
public Transaction.Result doTransaction(MutableData mutableData) {
mSingleUser.child("birthday").setValue(birthday);
mSingleUser.child("email").setValue(email);
mSingleUser.child("password").setValue(password);
return Transaction.success(mutableData);
}
@Override
public void onComplete(FirebaseError firebaseError, boolean b, DataSnapshot dataSnapshot) {
if(firebaseError != null) {
mSignUpPresenter.addUserFail(firebaseError);
} else {
mSignUpPresenter.addUserComplete();
}
}
});
}
Run Code Online (Sandbox Code Playgroud) android integration-testing automated-tests unit-testing firebase