标签: testing

iPhone的自动测试

我知道这将是一个长镜头,但我想我会尝试.没有人知道任何自动化测试的东西为iPhone模拟器?我喜欢它,如果有像Selenium这样的东西,但对于iPhone模拟器.我不需要像断言那样花哨的东西,只是可以伪造屏幕上的水龙头的东西,所以我可以停止滥用我的触控板.:)

有没有办法向iOS设备发送点击或关键事件(如Android上的adb)?

iphone testing automated-tests ios-simulator ios-ui-automation

71
推荐指数
4
解决办法
9万
查看次数

测试一个数字是否是斐波那契

我知道如何制作Fibonacci数列表,但我不知道如何测试给定数字是否属于斐波纳契列表 - 记住的一种方法是生成fib列表.数字达到那个数字并查看它是否属于数组,但必须有另一种更简单,更快速的方法.

有任何想法吗 ?

c++ testing algorithm math fibonacci

71
推荐指数
9
解决办法
4万
查看次数

测试地图的等效性

我有一个像这样的表驱动测试用例:

func CountWords(s string) map[string]int

func TestCountWords(t *testing.T) {
  var tests = []struct {
    input string
    want map[string]int
  }{
    {"foo", map[string]int{"foo":1}},
    {"foo bar foo", map[string]int{"foo":2,"bar":1}},
  }
  for i, c := range tests {
    got := CountWords(c.input)
    // TODO test whether c.want == got
  }
}
Run Code Online (Sandbox Code Playgroud)

我可以检查长度是否相同,并编写一个循环来检查每个键值对是否相同.但是当我想将它用于另一种类型的地图时(例如map[string]string),我必须再次编写此检查.

我最终做的是,我将地图转换为字符串并比较字符串:

func checkAsStrings(a,b interface{}) bool {
  return fmt.Sprintf("%v", a) != fmt.Sprintf("%v", b) 
}

//...
if checkAsStrings(got, c.want) {
  t.Errorf("Case #%v: Wanted: %v, got: %v", i, c.want, got)
}
Run Code Online (Sandbox Code Playgroud)

这假设等效映射的字符串表示是相同的,在这种情况下似乎是正确的(如果键是相同的,那么它们散列到相同的值,因此它们的顺序将是相同的).有一个更好的方法吗?在表驱动测试中比较两个映射的惯用方法是什么?

testing maps table-driven go equivalence

70
推荐指数
6
解决办法
4万
查看次数

Java Swing GUI的自动化测试

有哪些选项可用于构建使用Java Swing编写的GUI的自动化测试?

我想测试一些使用NetBeans Swing GUI Builder编写的GUI,因此可以在不需要对被测代码进行特殊篡改的情况下工作.

java testing swing automated-tests

69
推荐指数
7
解决办法
5万
查看次数

如何编写接口的junit测试?

为接口编写junit测试的最佳方法是什么,以便它们可用于具体的实现类?

例如,你有这个接口和实现类:

public interface MyInterface {
    /** Return the given value. */
    public boolean myMethod(boolean retVal);
}

public class MyClass1 implements MyInterface {
    public boolean myMethod(boolean retVal) {
        return retVal;
    }
}

public class MyClass2 implements MyInterface {
    public boolean myMethod(boolean retVal) {
        return retVal;
    }
}
Run Code Online (Sandbox Code Playgroud)

您如何针对界面编写测试,以便将其用于课程?

可能性1:

public abstract class MyInterfaceTest {
    public abstract MyInterface createInstance();

    @Test
    public final void testMyMethod_True() {
        MyInterface instance = createInstance();
        assertTrue(instance.myMethod(true));
    }

    @Test
    public final void testMyMethod_False() {
        MyInterface instance = createInstance(); …
Run Code Online (Sandbox Code Playgroud)

java testing junit unit-testing interface

69
推荐指数
5
解决办法
6万
查看次数

Android Instrumentation测试和Android Studio中的单元测试之间的区别?

从Android Studio 1.1rc开始,有单元测试支持,我想知道Android Instrumentation测试和单元测试之间有什么区别.

据我了解:
单元测试对于测试不调用Android API的代码非常有用,而Android测试测试则是集成测试,用于测试Android API特定元素或GUI组件.

但是,如果你在单元测试中使用像Robolectric或Mockito这样的框架,你可以测试Android代码(不需要设备)如果我没有弄错的话.


这是正确的,还是有更大的区别?如果是这样,每个人的用途是什么?

testing android integration-testing unit-testing android-studio

69
推荐指数
4
解决办法
3万
查看次数

如何在IntelliJ中为整个项目配置"缩短命令行"方法

当我运行测试时,我收到错误"命令行太长".如果我将Run/Debug配置中的"Shorten命令行"方法设置为特定方法或类的"JAR清单",但是如何为整个项目设置它或者是否有IDE全局设置?

testing settings intellij-idea

69
推荐指数
8
解决办法
5万
查看次数

如何模拟数据库进行测试(Java)?

我正在用Java编程,我的应用程序正在大量使用DB.因此,能够轻松测试我的数据库使用对我来说非常重要.
DB测试的全部内容是什么?对我来说,他们应该提供两个简单的要求:

  1. 验证SQL语法.
  2. 更重要的是,根据给定的情况检查数据是否被正确选择/更新/插入.

那么,似乎我所需要的只是一个数据库.
但实际上,我不喜欢,因为使用数据库进行测试的困难很少:

  • "只要让自己成为一个测试数据库,它有多难?" - 嗯,在我的工作场所,拥有个人测试数据库是非常不可能的.您必须使用"公共"数据库,每个人都可以访问.
  • "这些测试肯定不会很快......" - DB测试往往比通常的测试慢.进行慢速测试真的不太理想.
  • "这个程序应该处理任何案件!" - 尝试模拟数据库中的每个案例变得有些烦人甚至无法实现.对于每种情况,都应该进行一定量的插入/更新查询,这很烦人并且需要时间.
  • "等一下,你怎么知道那张桌子里有542行?" - 测试的主要原则之一是能够以与测试代码不同的方式测试功能.使用DB时,通常有一种方法可以做某事,因此测试与核心代码完全相同.

所以,你可以弄清楚我在测试时不喜欢数据库(当然,我必须在某些方面达到这个目的,但是在我发现大多数错误使用之后,我宁愿在我的测试后到达那里.其余的测试方法).但我在寻找什么?

我正在寻找一种使用文件系统或虚拟内存来模拟数据库,模拟数据库的方法.我想也许有一个Java工具/包允许简单构建(使用代码接口)每个测试的数据库模拟,模拟表和行,SQL验证,以及用于监视其状态的代码接口(而不是使用SQL) ).

你熟悉这种工具吗?


编辑:谢谢你的回答!虽然我要求一个工具,你也提供了一些关于这个问题的提示:)我需要一些时间来查看你的报价,所以我现在不能说你的答案是否令人满意.

无论如何,这里是我正在寻找的更好的视图 - 想象一个名为DBMonitor的类,它的一个功能是查找表中的行数.这是一个虚构的代码,说明我如何使用JUnit测试该功能:

public class TestDBMonitor extends TestCase {

    @Override
    public void setUp() throws Exception {

       MockConnection connection = new MockConnection();

       this.tableName = "table1";
       MockTable table = new MockTable(tableName);

       String columnName = "column1";
       ColumnType columnType = ColumnType.NUMBER;
       int columnSize = 50;
       MockColumn column = new MockColumn(columnName, columnType, columnSize);
       table.addColumn(column);

       for (int i = 0; i < …
Run Code Online (Sandbox Code Playgroud)

java database testing unit-testing jdbc

68
推荐指数
6
解决办法
8万
查看次数

使用Maven进行集成测试的最佳实践?

我有一个我用Maven构建的项目,它使用Hibernate(和Spring)从数据库中检索数据等.

我在项目中对DAO的"测试"扩展了Spring,AbstractTransactionalDataSourceSpringContextTests因此可以将DataSource连接到我的测试类中,以便能够实际运行查询/ Hibernate逻辑,获取数据等.

在其他几个项目中,我使用这些类型的测试与HSQL数据库(内存中或指向文件)一起使用,以便能够有效地测试实际的数据库查询逻辑,而无需依赖外部数据库.这很有用,因为它可以避免任何外部依赖关系,并且在运行测试之前数据库的"状态"(每个都包含在回滚的事务中)都已定义良好.

我很好奇关于组织这些测试的最佳方法,这些测试对于Maven来说实际上是一种松散的集成测试.保持这些测试感觉有点脏src/test/java,但从我读过的内容来看,似乎没有一个一致的策略或实践来组织与Maven的集成测试.

从我到目前为止所看到的,似乎我可以使用Failsafe插件(或Surefire的第二个实例)并将其绑定到integration-test阶段,并且我还可以绑定自定义启动或关闭逻辑(例如用于启动/停止HSQL实例)pre-integration-test或post-integration-test.但是,这真的是最好的方法吗?

所以我的问题基本上是 - 用Maven组织这个的普遍接受的最佳做法是什么?我在文档中找不到任何一致的答案.

我想要的是:

  • 从集成测试中分离单元测试,因此在该test阶段仅运行单元测试
  • 能够将自定义启动/关闭逻辑绑定到pre-integration-test和post-integration-test
  • 将集成测试的报告与单元测试Surefire报告合并/提交

java testing integration-testing maven-2

68
推荐指数
3
解决办法
3万
查看次数

如何检查动态连接的事件监听器是否存在?

这是我的问题:是否有可能以某种方式检查动态附加事件监听器的存在?或者我如何检查DOM中"onclick"(?)属性的状态?我已经像StackOverflow一样搜索了互联网,但是没有运气.这是我的HTML:

<a id="link1" onclick="linkclick(event)"> link 1 </a>
<a id="link2"> link 2 </a> <!-- without inline onclick handler -->
Run Code Online (Sandbox Code Playgroud)

然后在javascript中我将动态创建的事件监听器附加到第二个链接:

document.getElementById('link2').addEventListener('click', linkclick, false);
Run Code Online (Sandbox Code Playgroud)

代码运行良好,但我检测连接的侦听器的所有尝试都失败了:

// test for #link2 - dynamically created eventlistener
alert(elem.onclick); // null
alert(elem.hasAttribute('onclick')); // false
alert(elem.click); // function click(){[native code]} // btw, what's this?
Run Code Online (Sandbox Code Playgroud)

jsFiddle就在这里.如果单击"添加onclick for 2"然后单击"[link 2]",则事件会激活,但"测试链接2"始终报告为false.有人可以帮忙吗?

javascript testing addeventlistener dom-events

68
推荐指数
8
解决办法
13万
查看次数