小编Car*_*ter的帖子

将TDD用于库/ API代码和BDD作为集成测试是否有意义?

我是BDD的全新手,我想了解它在开发周期中的作用.在TDD方法中,我们通常会为库或apis编写单元测试,我们会模拟对象,这很好,因为它甚至可以驱动我们的设计.这些测试将在实际代码之前编写,这很好.

我知道BDD更多的是关于规范/场景测试,我可以看到它非常适合根据实际代码测试业务需求.但是编写这些测试的最佳实践是什么?我们是否仍然继续编写单独的测试(如在TDD中)模拟出依赖关系并为可能出错的每一件事编写单元测试?然后写我们的bdd测试?我们首先编写bdd测试吗?我们是否只针对单个组件编写bdd测试?

我使用.NET并且通常编写asp.net mvc应用程序,但这更像是一个理论问题而且独立于底层编程语言.

非常感谢.

tdd bdd unit-testing

5
推荐指数
1
解决办法
472
查看次数

你在实践中使用了什么C++重构?

我将创建现有自动化C++重构工具的比较表,并探索创建此类工具(自由和开源)的能力.

我的问题是:你在日常工作中真正使用了哪些重构?有一些显而易见的事情,比如重命名变量/类/方法,但是有没有特定于C++的东西,比如处理模板,STL,复制构造函数,初始化器等等?

我有兴趣构建C++开发人员每天在编码中面临的所有小问题的真实画面,并且至少在理论上可以实现自动化.我和同事说话但这可能还不够.

提前致谢.

c++ refactoring automated-refactoring

5
推荐指数
1
解决办法
374
查看次数

无法在android中获取接近传感器的值

有人可以举例说明如何使用接近传感器吗?我尝试以与其他传感器相同的方式使用它,但它不起作用.

这是我一直在使用的代码片段:

 final SensorManager mSensorManager;
 final Sensor mproximity;

mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
mproximity =  mSensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY);

mSensorManager.registerListener(new SensorListener(){

public void onAccuracyChanged(int arg0, int arg1) {
   // TODO Auto-generated method stub
   Toast.makeText(test.this,"proximity sensor accu ", Toast.LENGTH_SHORT).show();
}

public void onSensorChanged(int arg0, float[] arg1) {
   // TODO Auto-generated method stub
   Toast.makeText(test.this,"proximity sensor ", Toast.LENGTH_SHORT).show();
}

}, Sensor.TYPE_PROXIMITY, 1);
Run Code Online (Sandbox Code Playgroud)

请告诉我哪里出错了.

android sensor proximity

5
推荐指数
1
解决办法
6427
查看次数

有效的单元测试覆盖率(以及实际应该测试的内容?)

我看到有几个问题基于这个主题,但我有一些具体的例子,我正在努力.我希望有人可以在这里帮助我,因为我是新手测试驱动开发和单元测试.

(我不确定它是否重要,但我使用的是C#与.NET framework 4.0并使用Microsoft的内置测试框架)

首先,是否值得测试非常简单的代码块?例如,对于我的一个类,我有一个Fill方法,它接受10个参数,并根据这些参数设置类中10个属性的值.填充代码实际上只是一系列值设置语句.我已经读过一个好的单元测试应该只断言一件事,但在我看来,为了检查所有这些值是否已正确设置,我必须断言10件事.所以要么我根本不能测试它,相信代码很简单,或者写10个不同的单元测试来检查每个属性.这些都是正确的吗?

第二个例子.我有一个代码块,可以调用一个类的私有方法,最后调用一个Web服务来向用户发送一封电子邮件.我知道我应该为电子邮件服务注入一个模拟Web服务,这样我就不会测试多个类,但是我应该如何测试所有这些私有方法和那个电子邮件调用?

第三个例子与上一个例子类似.我的班级结构看起来像:

控制器---取决于---> IWidget(某些业务对象)&& IDataProvider DataProvider(Implements IDataProvider)---取决于---> WebService WebService ---直接调用--->数据库

现在我有控制器的单元测试(注入模拟Widgets和DataProviders).这一切都很好.我也有Widget的单元测试没有问题.

问题归结于DataProvider和WebService.此特定实例中的WebService除了通过数据提供者的请求并传回数据(由于物理体系结构限制)之外什么都不做.

我无法对DataProvider进行单元测试,因为我不确定如何注入模拟Web服务.我也不确定单元测试DataProvider是否值得,因为我最终只需要编写很多模拟数据集来测试值.同样,我不确定如何对Web服务进行单元测试,因为在这种情况下,WebService的主要功能取决于数据库.再一次,这值得测试吗?如果WebService做了更多,除了仅作为传递但仍依赖于数据库,该怎么办?

我非常感谢任何人在这方面可以提出的任何建议.非常感谢.

.net tdd unit-testing web-services code-coverage

5
推荐指数
1
解决办法
589
查看次数

Sql Server TOP - 用过吗?

SQL Server中是否有关键字或元信息会告诉您TOP是否生效?

EX:
Select TOP 5 * From Stuff

RESULT: 5 rows
Run Code Online (Sandbox Code Playgroud)

确定是否有6个或更多的最佳方法是什么?

I could do:
SELECT TOP 6 count(*) FROM Stuff
Run Code Online (Sandbox Code Playgroud)

但我担心单独调用检索计数,因为实际查询比这个和大型表复杂得多.

谢谢!

sql sql-server database-performance

5
推荐指数
2
解决办法
163
查看次数

如何使用 FluentAssertions 测试嵌套集合

我有以下规格

BidirectionalGraph Fixture = new BidirectionalGraph();

public void VerticesShouldBeAbleToAssociateMultipleEdges()
{
    int a = 0;
    int b = 1;
    int c = 2;

    Fixture.AddEdge(a, b);
    Fixture.AddEdge(b, c);
    Fixture.AddEdge(c, a);

    Fixture.EdgesFrom(a).Should().BeEquivalentTo
        ( new []{a, b} 
        , new []{a, c});
}
Run Code Online (Sandbox Code Playgroud)

其中 EdgesFrom 定义如下

public IEnumerable<int[]> EdgesFrom(int vertex)
Run Code Online (Sandbox Code Playgroud)

但是我的测试失败了

Result Message: Expected collection 

    {{0, 1}, {0, 2}} to be equivalent to 
    {{0, 1}, {0, 2}}.
Run Code Online (Sandbox Code Playgroud)

这对我来说不太有意义,因为它们显然是等效的。FluentAssertions在比较集合的集合时不起作用吗?

c# collections tdd fluent-assertions

5
推荐指数
1
解决办法
2226
查看次数

如何在Android Studio的单元测试中使用Mockito/Hamcrest

我希望能够在Android Studio中进行单元测试和仪器测试,并在其中使用Mockito.

我在Android Studio 0.8中使用新方法进行测试.这是:

  • 用gradle建设
  • 使用官方Android API进行测试(ActivityInstrumentationTestCase2等)
  • 将测试放在应用程序的目录中,而不是作为单独的模块
  • 在Android Studio中启动测试作为"Android Test"运行配置

如何在我的测试中编写代码,这些代码依赖于仅用于测试的库,例如mockito或hamcrest?

我想在编译和运行测试时包含这些库,但要避免将它们导出到已发布的.apk.

https://code.google.com/p/mockito/wiki/DeclaringMockitoDependency中,我读过我应该将依赖项添加为:

dependencies {
    ....
    testCompile "org.mockito:mockito-core:1.9.5"
}
Run Code Online (Sandbox Code Playgroud)

但是当我跑步时我得到:

构建脚本错误,找不到支持的Gradle DSL方法:'testCompile()'!

虽然我不确定它是否相关,但我使用的gradle构建文件是:

apply plugin: 'android'

dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
    compile project(':android-sdk')
    testCompile "org.mockito:mockito-core:1.9.5"
}

android {
    compileSdkVersion 19
    buildToolsVersion "20.0.0"

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
    }

    sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src']
            resources.srcDirs = ['src']
            aidl.srcDirs = ['src']
            renderscript.srcDirs = ['src']
            res.srcDirs = ['res']
            assets.srcDirs = ['assets']
        } …
Run Code Online (Sandbox Code Playgroud)

android automated-tests hamcrest mockito android-studio

5
推荐指数
1
解决办法
6579
查看次数

如何正确地进行测试驱动开发?

我读过关于TDD的文章,我在我的新项目中尝试过.

TDD周期

据我所知,在TDD中,它就像是黑盒测试,即它重要的是什么而不是如何.因此,我在许多帖子上阅读了它之后总结并停止测试私有方法,因为它不是正确的方法.

但是,由于这些原因,我没有这样做.

我将通过示例向您展示:我有一个程序读取文本段落,所以我在我的测试方法中写了这样的东西(对于tdd step1).

/*
My program reads a textual paragraph from file and saves it to my custom paragraph object; 
*/
Run Code Online (Sandbox Code Playgroud)

因此,我采用这种方法来创建RED案例.

public void paragraphMustNotBeNullTest(){
File f = new File("some path")
 ParagraphReader reader= new ParagraphReader();
 reader.read();
assertNotNull("my custom paragraph is null",reader.getCustomParagraph());
}
Run Code Online (Sandbox Code Playgroud)

我写了以下代码:

package com.olabs.reader;

import java.io.FileInputStream;
import java.io.InputStream;

import com.olabs.models.OlabsParagraph;

public class Para {


    private String paragraphText = null;
    private Paragraph oParagraph = null;

    public Paragraph getCustomParagraph() {
        return oParagraph;
    } …
Run Code Online (Sandbox Code Playgroud)

java tdd

5
推荐指数
1
解决办法
452
查看次数

多列中的TSQL计数出现次数

我有一个表,其中每列是一个问题,行是答案,可以假设从1到4的值

每个问题计算每个答案的出现次数的最有效方法是什么?

输入表

q1  q2  q3
1   3   1
2   1   4
1   2   1
Run Code Online (Sandbox Code Playgroud)

期望的输出表

answer  q1  q2  q3

    1   2   0   2
    2   1   1   0
    3   0   1   0   
    4   0   0   1
Run Code Online (Sandbox Code Playgroud)

到目前为止,我到达了以下(针对q3问题),但这只是针对一个问题

CREATE TABLE #t
  (
    answer int
  )
insert into #t (answer) values (1)
insert into #t (answer) values (2)
insert into #t (answer) values (3)
insert into #t (answer) values (4)

select * into #q3 from (select q3 as q3,count(*) as occurenceq3
                    from …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server aggregate-functions

5
推荐指数
1
解决办法
408
查看次数

如何在夜视仪中发送按键

我知道如何使用nightwatch发送点击事件:

browser.click('#my-control');
Run Code Online (Sandbox Code Playgroud)

但我一直无法找到发送关键事件的方法.怎么在夜视仪上完成?

testing selenium acceptance-testing keypress nightwatch.js

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