小编Esk*_*ola的帖子

TDD入门?

我们正处于尝试实施TDD的初始阶段.我演示了Visual Studio Team System代码覆盖/ TDD工具,团队对这些可能性感到兴奋.目前我们使用Devpartner进行代码覆盖,但我们想要消除它,因为它很昂贵.我们在TDD方面的经验非常有限,并且希望确保我们不会走错方向.目前我们使用SourceSafe进行源代码管理,但将在大约一年内迁移到Team System.

我可以告诉你我们的应用程序是以数据为中心的.我们有大约900个表,6000个存储过程和大约45GB的数据.我们有很多基于用户数据和系统中不同费率的计算.我们的很多代码也是基于时间(计算当前日期的兴趣).其中一些计算非常复杂且非常密集(只有少数人知道其中一些的详细信息).

我们希望实施TDD来解决质量保证问题.许多开发人员被迫在他们不熟悉的领域修复bug并最终破坏某些东西.开发人员也几乎不敢触摸,因为代码被系统中的所有内容使用.我们想要缓解这个问题.

我担心,因为我们的代码是以数据为中心的,因此实现TDD可能比大多数系统稍微复杂一些.我正在努力想出一个我可以向管理层提出的游戏计划,但我希望不要陷入一些TDD初学者的错误.此外,如果Team System中的工具/设施使TDD更加完整,那么这将是不错的,但我们不想等待Team System开始.

我们要问的第一个问题是,我们应该从visual studio中的工具开始吗?我读过帖子,人们抱怨视觉工作室中的内在工具(需要创建一个单独的项目来创建你的测试)但是视觉工作室中的工具的一件事是他们是免费的,并且集成是好的.如果我们决定使用XUnit,MBUnit或NUnit这样的其他路线,那么我们很可能会有一些可能很高的成本:

1)如果我们想要IDE集成(未提及我们的大部分代码是VB.Net)
--- TestDriven.Net或Resharper或?????

2)如果我们想要代码覆盖
--- NCover(其功能似乎相当昂贵)

此外,我在visual studio 2010中看到了一些非常酷的功能.比如能够进行输入测试(在表单上输入的数据)或记录用户所做的事情的能力,然后将其输入到单元测试中以重现问题.

此外,虽然我还没有完全掌握嘲弄对象的概念,但我知道很多人都认为这是必须的.问题是所有的模拟框架都可以插入到visual studio的TDD版本(MSTEST)中吗?

我告诉管理层我们应该只是添加回归测试(新开发或发现错误),但不要试图通过我们所有的代码并进行单元测试.这将是太大的项目.

无论如何,我会感激任何人的帮助.

.net tdd code-coverage mocking

10
推荐指数
2
解决办法
1482
查看次数

使用OSGi时是否可以进行字节码操作?

我正在创建一个应用程序服务器,在其中我需要使用一些字节码操作(例如,将自定义equalshashCode方法插入到带注释的类中@Entity).现在我给JVM一个Java代理(-javaagent选项),它使用ASM进行字节码转换.

我一直在考虑使用OSGi,但我不知道它是否允许我进行必要的字节码操作.

  1. 使用OSGi时是否可以进行字节码操作?怎么样?
  2. bundle是否有可能声明自己,它需要一些字节码操作才能工作?例如,应用程序服务器要求操作它自己的一些核心类.
  3. 是否可以指定其他一些bundle需要一些字节码操作,而没有那个bundle知道它?例如,必须操纵在服务器上运行的所有应用程序,但应用程序不需要知道它.
  4. bundle是否有可能声明自己,所有依赖它的bundle必须是字节码操作的?这将使我很容易声明所有依赖于包含@Entity注释的API包的人都必须被操纵.

java aop osgi bytecode-manipulation

9
推荐指数
2
解决办法
1578
查看次数

当多个用户可以编辑相同数据时,首选数据库/ webapp并发设计

我有一个内部使用的ASP.NET C#业务webapp.我们遇到的一个问题是原始设计没有考虑并发检查 - 所以现在多个用户访问相同的数据并覆盖其他用户的更改.所以我的问题是 - 对于webapps,人们通常会使用悲观或乐观的并发系统吗?推动使用一个优先于另一个的偏好是什么以及需要考虑哪些设计考虑因素?

我目前倾向于乐观的并发检查,因为它似乎更宽容,但我担心可能会发生多次变化的可能性相互矛盾.

谢谢!

c# asp.net concurrency database-design web-applications

8
推荐指数
1
解决办法
1055
查看次数

PipedReader/PipedWriter的更好替代方案?

我需要一个缓冲char流,我在一个线程中编写,我从另一个线程中读取.现在我正在使用PipedReaderPipedWriter,但这些类会导致性能问题:wait(1000)当内部缓冲区为空时,PipedReader会执行此操作,这会导致应用程序明显滞后.

是否会有一些库与PipedReader/PipedWriter做同样的事情,但性能更好?或者我必须实施自己的车轮?

java data-structures

7
推荐指数
1
解决办法
3459
查看次数

物理上更改Maven pom.xml <properties>值

我正在为几个相互依赖的项目构建一个部署管道.每个构建都会生成一个具有唯一版本号的新版本,该版本号部署到Maven存储库.然后,使用该新版本作为依赖项触发管道中的下游项目,并以类似方式构建.

我需要的是在构建项目之前更改pom.xml(或多模块项目中的所有poms)中的属性值.例如,在下面的代码中,"0.1.200"将更改为"0.1.345"(或者无论最新的内部版本号是什么).使用系统属性不是一种选择,因为更新的pom将部署在Maven存储库中,因此更改必须是持久的.

<properties>
    <foo.version>0.1.200</foo.version>
</properties>

<dependencies>
    <dependency>
        <groupId>com.example</groupId>
        <artifactId>foo</artifactId>
        <version>${foo.version}</version>
    </dependency>
</dependencies>
Run Code Online (Sandbox Code Playgroud)

是否有一些Maven插件使用一个命令行指令执行此操作?否则我需要编写一个简短的脚本(例如在Ruby中),它解析并更改项目中的所有pom.xml文件.

maven build-pipeline continuous-delivery

6
推荐指数
1
解决办法
4944
查看次数

多阶段部署建议?

Web应用程序的多阶段部署有哪些最佳实践和一般理论?

我对使用Git,Capistrano和Passenger部署Rails应用程序特别感兴趣,我发现帖子讨论了这个过程的细节:

我应该考虑每个阶段(测试,分期,生产)?这些阶段应该部署到不同的物理服务器吗?有关多阶段部署的任何提示或建议?我应该留意哪些障碍?

最好,

雅各

git deployment capistrano ruby-on-rails

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

命名约定和命名空间

如果我在一个图层上有与另一个图层上的对象同名的对象,最好是用一些前缀更改对象名称还是使用新的命名空间并用完全限定的名称引用它们?例如:

namespace Project1.Data
Object Person;

namespace Project1.Model
Object Person;
Run Code Online (Sandbox Code Playgroud)
Data.Person.Name=Person.Name;

OR

dbPerson.Name= Person.Name;
Run Code Online (Sandbox Code Playgroud)

c# naming-conventions

4
推荐指数
1
解决办法
719
查看次数

使用JRuby在Windows上编写Unix换行符

我正在编写一个Ruby脚本来生成Unix shell脚本,但是我无法让JRuby在Windows上编写Unix换行符.

我写了一个test.rb包含以下内容的文件:

File.open("test.sh", 'w') do |f|
  f.write("#!/bin/sh\n")
  f.write("echo hello\n")
end
Run Code Online (Sandbox Code Playgroud)

当我使用命令执行它时,java -jar jruby-complete-1.6.5.jar test.rb生成的文件包含\r\n换行符而不是\n换行符.

如何强制JRuby用Unix换行编写文本文件?

ruby unix windows newline jruby

4
推荐指数
1
解决办法
2281
查看次数

为什么Java HashMap复制构造函数会影响浮点精度?

我有一些代码计算浮点数映射的线性组合,并遇到了使用复制构造函数的有趣副作用.

如果我计算两个映射中的值的线性组合并将其与使用这些映射的两个副本中的值计算的线性组合进行比较,则由于出现的情况,计算实际上具有略微不同(在10 ^ -7附近)的结果浮点精度.

为什么会这样?

这是一些示例代码:

import java.util.*;

public class WTF {
    public static void main(String[] args) {
        Random rand = new Random();

        for (int c = 0; c < 1000; c++) {
            Map<String, Float> weights = new HashMap<String, Float>();
            Map<String, Float> values = new HashMap<String, Float>();

            for (int j = 0; j < 10; j++) {
                weights.put("sig" + j, Float.valueOf(rand.nextFloat()));
                values.put("sig" + j, Float.valueOf(rand.nextFloat()));
            }

            Map<String, Float> weightsCopy = new HashMap<String, Float>(weights);
            Map<String, Float> valuesCopy = new …
Run Code Online (Sandbox Code Playgroud)

java floating-point copy-constructor

3
推荐指数
2
解决办法
587
查看次数

如何在git中的先前提交中回滚文件中的更改

我做了3'git commit',但我没有做过'git push'.

1. commit 1
2. commit 2
   touches fileA
   touches fileB
   touches fileC
3. commit 3
Run Code Online (Sandbox Code Playgroud)

那我该怎么办?

  1. 回滚我在文件b中为提交2做的更改?(因为我已经'git commit',我不能再进行'git checkout - fileB'了,我怎么能回滚我的更改?
  2. 在fileC中进行更改并使其成为commit 2的一部分?我想我现在可以去改变文件,然后运行'git rebase -i HEAD~2'正确吗?

git

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

Java死锁提示

我正在用java做一些练习(有些人可能会认为代码来自哪里).我尝试使用以下代码来挑衅死锁:

class Resource {

    public Integer value = 42;
}

public class DeadLockRisk implements Runnable {

    private Resource resourceA = new Resource();
    private Resource resourceB = new Resource();

    public void write(int a, int b) {

        System.out.println(Thread.currentThread().getName() + " try write Lock A");

        synchronized(resourceA) {

            System.out.println(Thread.currentThread().getName() + " write Lock A");
            System.out.println(Thread.currentThread().getName() + " try write Lock B");

            synchronized(resourceB) {

                System.out.println(Thread.currentThread().getName() + " write Lock B");

                resourceA.value = a;
                resourceB.value = b;
        //sit on it!
        //try { Thread.sleep(5000); } catch (Exception …
Run Code Online (Sandbox Code Playgroud)

java deadlock

0
推荐指数
1
解决办法
124
查看次数