小编Dav*_*uth的帖子

TeamCity构建标签在git存储库上间歇性地失败

我的版本在Windows Server 2003,TeamCity 6.0.3上运行.git存储库存储在同一台服务器上,可以通过cygwin的sshd和gitd访问.我在TeamCity中的vcs配置如下:

获取URL:git:// server/Repo

推送URL:ssh:// server /〜/ Repo

验证设置

验证方法:密码

用户名:TeamCitySC(这是专门为标签设置的本地帐户)

密码:******

对于每个用户,在它们到存储库的主路径中有一个符号链接,因此是〜/ Repo路径.标签在大约100个版本中工作得很好,最近它定期开始抱怨以下消息:

root'git root'标记失败org.eclipse.jgit.api.errors.JGitInternalException:将ref refs/tags/build-108更新为Tag [03e70a74b39c1393f5ce684424194210513b4d48] = {object 0f6101df222f5370a17f5ce1c97eb2348d64970c type commit tag build-108 tagger PersonIdent [SYSTEM, SYSTEM @ server,Thu May 26 16:16:07 2011 -0600]}失败了.来自RefUpdate.update()的ReturnCode在org.eclipse.jgit.api.TagCommand.call(TagCommand.java:159)的jetbrains.buildServer.buildTriggers.vcs.git.GitVcsSupport.label(GitVcsSupport.java:1334)处被拒绝jetbrains.buildServer.vcs.impl.VcsLabeler.setLabel(VcsLabeler.java:80)at jetbrains.buildServer.vcs.impl.VcsLabeler.setLabel(VcsLabeler.java:1)at jetbrains.buildServer.serverSide.impl.FinishedBuildImpl.setLabel( FinishedBuildImpl.java:10)at jetbrains.buildServer.serverSide.impl.auth.SecuredBuildFactory $ SecuredFinishedBuildImpl.setLabel(SecuredBuildFactory.java:3)at jetbrains.buildServer.controllers.SetLabelAction.doProcess(SetLabelAction.java:11)​​at etc .. .

即使我手动尝试通过TeamCity标记构建(即在给定构建的"更改"选项卡中"标记此构建源"链接),它仍然会失败.

git teamcity

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

"集成测试","持续集成服务器"和"夜间构建"之间的关系是什么?

我已经离开学校几年了,最近刚开始回去重新阅读我的一些教科书(我想保持新鲜感).我实际上发现我的软件工程教科书很有趣并计划阅读整个内容 - 如果有趣的话,因为当我在学校时我发现它非常无聊.

因此有一个专门用于集成测试的半章.而且,就像学术界的大多数事情一样,这是所有理论,在阅读的任何地方都没有实际应用.但是,它让我思考.

我们使用CruiseControl进行持续集成测试,但是看到我们是一个大型开发团队并且我没有处理部署/构建/发布,我从来没有亲自动手.当我打破夜间构建时,我不时会收到一封电子邮件.两位技术人员向我解释.

回答我的问题:我的旧教科书将集成测试称为组件之间的配对和测试,而不是针对特定类的单元测试.这可以通过"自上而下"或"自下而上"的方法完成,其中自上而下意味着将整个事物作为一个系统进行测试,然后递归地将系统分解为更小的子系统并对其进行测试; 自下而上意味着相反(从小开始,变大).

我的问题:

以下三个概念如何相互关联:

  • 这是对集成测试的学术解释; 和
  • 所谓的"持续集成服务器",如Hudson,Jenkins或CruiseControl; 和
  • 具有"夜间构建"的概念,其中代码从SCM中检出并自动编译

前两个中有"整合"这个词只是巧合吗?执行"夜间构建"与运行持续集成服务器(在晚上)相同,还是两个单独的概念?

如果持续集成测试和夜间构建与学术集成测试完全无关,那么集成测试如何在现实世界中体现出来呢?他们的框架像JUnit一样,但只关注集成测试吗?

我知道这些问题很多,但它们实际上只是归结为了解每个问题以及它们的使用方法.在线搜索每个都拉回了相当模糊,抽象的答案.

testing continuous-integration integration-testing automated-tests

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

解释器模式示例

我很好奇知道解释器模式的一些实时示例。我可以找到一些重复的示例,例如“正则表达式”示例。有人可以引导我介绍其他示例吗?

design-patterns interpreter-pattern

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

在单元测试AAA模式中提取数据

在"AAA"模式中,应该写出行为数据的提取?
在法案或断言部分?

考虑这个单元测试,两个人的提取,如果它在例如示例中或在断言中?我们想为公司的所有UT制定标准.

[Test]
public void Test()
{
    // Arrange
    var p1 = new Person();
    var p2 = new Person();
    Session.Save(p1);
    Session.Save(p2);

    // Act
    var result = new PersonQuery().GetAll();
    var firstPerson = result[0];
    var secondPerson = result[1];

    // Assert
    Assert.AreEqual(p1.Id, firstPerson.Id);
    Assert.AreEqual(p2.Id, secondPerson.Id);        
}
Run Code Online (Sandbox Code Playgroud)

(请在这个简单的测试中忽略,我可以写Assert.AreEqual(p1.Id, result[0].Id);)
我知道这不是一个大问题,但我仍然想知道如何做到最好.

c# unit-testing arrange-act-assert

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

黄瓜未定义的方法

我使用的是cucumbercapybara

我有几个类似的错误.

对于步骤:

Then /I should see movies of rating 'PG' or 'R'/ do
  page.body.should match(/<td>PG<\/td>/)
  page.body.should match(/<td>R<\/td>/)
end
Run Code Online (Sandbox Code Playgroud)

黄瓜错误:

undefined method `match' for #<Cucumber::Rails::World:...> (NoMethodError)
./features/step_definitions/movie_steps.rb:37:in 
   `/I should see movies of rating 'PG' or 'R'/'
Run Code Online (Sandbox Code Playgroud)

对于步骤:

Then /I should see an empty table/ do
  page.body.scan(/<tr>/).length.should == 0
end
Run Code Online (Sandbox Code Playgroud)

黄瓜错误:

undefined method `should' for 1:Fixnum (NoMethodError)
./features/step_definitions/movie_steps.rb:46:in 
      `/I should see an empty table/'
Run Code Online (Sandbox Code Playgroud)

并为步骤:

Then /I should see all of the movies/ do
  Movie.find(:all).length.should page.body.scan(/<tr>/).length
end

undefined …
Run Code Online (Sandbox Code Playgroud)

rspec ruby-on-rails cucumber rspec-expectations

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

单身人士抽象工厂模式

我想实现一个抽象工厂模式,但也想成为一个单例.

class WindowFactory {
protected:
    virtual Scrollbar* createScrollbar() = 0;
};

class MacWindowFactory: public WindowFactory {
    virtual Scrollbar* createScrollbar() {
        //return a instance
    }
    ;
};

class LinuxWindowFactory: public WindowFactory {
    virtual ScrollBar* createScrollbar() {
        //return a instance
    }
    ;
};
Run Code Online (Sandbox Code Playgroud)

有人可以帮我提供一些制作这个抽象工厂单例的示例代码吗?

提前致谢.

c++ singleton design-patterns abstract-factory

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

在依赖关系中查找高级和低级模块以应用依赖性倒置Principe

依赖倒置原则说:

  • 高级模块不应该依赖于低级模块.两者都应该取决于抽象.
  • 抽象不应该依赖于细节.细节应取决于抽象.

我怎样才能在我的应用程序中找到高级和低级模块,对它们有什么清晰的定义吗?

dependencies design-patterns dependency-inversion

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

在持续集成中运行的测试中应该如何设置功能切换?

使用功能切换时如何进行测试?您希望您的开发计算机尽可能接近生产。从我观看的视频来看,功能切换的实现方式允许某些人“使用”该功能(即,0 到 100% 的用户,或选定的用户等)。

为了正确地进行持续集成,在进行测试时,您是否必须使用与生产服务器相同的功能切换设置?或者更好的是,如果该功能未在生产中关闭,请确保在构建管道中运行自动化测试时该功能已开启?您最终是在测试代码中放置功能切换,还是在新文件中编写测试?新功能何时是系统测试必须进行的流程中的强制性步骤?

testing continuous-integration featuretoggle

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

是否可以通过自定义运行永久更新TeamCity构建参数的值?

是否可以通过自定义运行永久更新构建参数的值?

例如,考虑一个配置为具有内部版本号格式的版本:%Major%.%Minor%.%Patch%.%build.counter%

Major,Minor和Patch,在构建配置中定义为具有特定值.为了举个例子,假设这给出了3.1.2.36的内部版本号.

可以通过单击运行旁边的"..."更改构建号,然后更改其中一个参数的值.从1-> 2更改Minor并从2-> 0更改将使下一个版本的编号为3.2.0.37.

我并不过分担心37没有被重置为0,但问题是被触发的下一个构建(不是自定义运行的结果)将具有内部编号3.1.2.38,这是一个较低的数字.是否有可能在运行自定义构建并更改新值保持的数字时?

我正在寻找一种没有TeamCity管理员权限的用户可以根据他们所做的更改来增加版本号的方法.

我们正在运行v8.1.2(build 29993).

teamcity

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

类字段命名与方法参数命名

在同一个类中命名类字段与方法参数时,什么是最佳实践?

例如,如果我有一个名为的字段transactionType,我是否还应该在我的setter方法中命名参数transactionType并使用this.transactionType

我不是要求一个意见,我只是想知道这是否可以接受,或者是否会被认为是混乱,因为有两个相同名称的用途(尽管范围明显不同).

java standards

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