我的版本在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标记构建(即在给定构建的"更改"选项卡中"标记此构建源"链接),它仍然会失败.
我已经离开学校几年了,最近刚开始回去重新阅读我的一些教科书(我想保持新鲜感).我实际上发现我的软件工程教科书很有趣并计划阅读整个内容 - 如果有趣的话,因为当我在学校时我发现它非常无聊.
因此有一个专门用于集成测试的半章.而且,就像学术界的大多数事情一样,这是所有理论,在阅读的任何地方都没有实际应用.但是,它让我思考.
我们使用CruiseControl进行持续集成测试,但是看到我们是一个大型开发团队并且我没有处理部署/构建/发布,我从来没有亲自动手.当我打破夜间构建时,我不时会收到一封电子邮件.两位技术人员向我解释.
回答我的问题:我的旧教科书将集成测试称为组件之间的配对和测试,而不是针对特定类的单元测试.这可以通过"自上而下"或"自下而上"的方法完成,其中自上而下意味着将整个事物作为一个系统进行测试,然后递归地将系统分解为更小的子系统并对其进行测试; 自下而上意味着相反(从小开始,变大).
我的问题:
以下三个概念如何相互关联:
前两个中有"整合"这个词只是巧合吗?执行"夜间构建"与运行持续集成服务器(在晚上)相同,还是两个单独的概念?
如果持续集成测试和夜间构建与学术集成测试完全无关,那么集成测试如何在现实世界中体现出来呢?他们的框架像JUnit一样,但只关注集成测试吗?
我知道这些问题很多,但它们实际上只是归结为了解每个问题以及它们的使用方法.在线搜索每个都拉回了相当模糊,抽象的答案.
testing continuous-integration integration-testing automated-tests
我很好奇知道解释器模式的一些实时示例。我可以找到一些重复的示例,例如“正则表达式”示例。有人可以引导我介绍其他示例吗?
在"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);)
我知道这不是一个大问题,但我仍然想知道如何做到最好.
我使用的是cucumber与capybara
我有几个类似的错误.
对于步骤:
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) 我想实现一个抽象工厂模式,但也想成为一个单例.
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)
有人可以帮我提供一些制作这个抽象工厂单例的示例代码吗?
提前致谢.
使用功能切换时如何进行测试?您希望您的开发计算机尽可能接近生产。从我观看的视频来看,功能切换的实现方式允许某些人“使用”该功能(即,0 到 100% 的用户,或选定的用户等)。
为了正确地进行持续集成,在进行测试时,您是否必须使用与生产服务器相同的功能切换设置?或者更好的是,如果该功能未在生产中关闭,请确保在构建管道中运行自动化测试时该功能已开启?您最终是在测试代码中放置功能切换,还是在新文件中编写测试?新功能何时是系统测试必须进行的流程中的强制性步骤?
是否可以通过自定义运行永久更新构建参数的值?
例如,考虑一个配置为具有内部版本号格式的版本:%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).
在同一个类中命名类字段与方法参数时,什么是最佳实践?
例如,如果我有一个名为的字段transactionType,我是否还应该在我的setter方法中命名参数transactionType并使用this.transactionType?
我不是要求一个意见,我只是想知道这是否可以接受,或者是否会被认为是混乱,因为有两个相同名称的用途(尽管范围明显不同).