我的构建场景是这样的(简化):
如果测试失败,TeamCity仍会发布工件.这是不必要的并且占用磁盘空间.我该如何防止这种情况?找不到任何复选框或其他东西(TeamCity 6.5 Enterprise).
我曾经有过TeamCity + WiX + MSBuild社区任务.现在我已升级到WiX 3.5,我不记得我是如何配置它的.:)当我在通过TeamCity进行攻击时,我遇到了"AssemblyInfo Patcher".我想,"太棒了!这会让我的生活变得更轻松!" 我使用%build.vcs.number.1%了格式并构建了我的安装程序.
虽然修补程序确实提取了vcs编号,但它将其用于版本中的主要编号.所以不是1.0.0.xxxx,它制作了版本xxxx.0.0.0.
我查看了JetBrain的文档站点,并提出了与将其更改为更合适的设置无关的任何内容.我也寻找正则表达式支持,但没有找到任何东西.
任何人都可以建议一个好的解决方案,或者我应该回去尝试配置我的原始工具集?
所以我一直在阅读关于Objective-C的模板方法,我试图了解它们的特殊之处.根据我的理解,Base类中的任何方法都可以被覆盖并且可以调用super吗?那么模板方法不仅仅是覆盖基类中的方法吗?
如果我错了,你能解释一下模板方法模式是什么,你能提供一个例子吗?
据我所知,工厂方法是简单工厂,工厂对象是抽象工厂?和:
- 工厂方法(简单工厂):
public class SimplePizzaFactory {
public static final int CHEESE = 1;
public static final int PEPPERONI = 2;
public static final int VEGGIE = 3;
public static Pizza createPizza(int type) {
Pizza pizza = null;
if (type == CHEESE) {
pizza = new CheesePizza();
} else if (type == PEPPERONI ) {
pizza = new PepperoniPizza();
} else if (type == VEGGIE ) {
pizza = new VeggiePizza();
}
return pizza;
}
}
Run Code Online (Sandbox Code Playgroud)
工厂对象(抽象工厂):
?
我对吗?
工厂模式的实现有多少,它们的区别是什么?
我需要在特定用户ID下的配置上执行构建.我怎样才能做到这一点?我无法切换代理服务作为此用户ID运行,因为我只需要为此特定配置使用此用户或生产ID.我怎么能在Teamcity中做到这一点?
我有一个状态模式的实现,其中每个状态处理从事件队列获取的事件.State因此,基类具有纯虚方法void handleEvent(const Event*).事件继承基Event类,但每个事件都包含可以是不同类型的数据(例如int,string ......或者其他).handleEvent必须确定接收事件的运行时类型,然后执行向下转换以提取事件数据.事件是动态创建并存储在队列中的(因此在此处进行向上转换 ......).
我知道向下倾斜是一种糟糕设计的标志,但在这种情况下可以避免它吗?我正在考虑访问者模式,其中基类State将包含每个事件的虚拟处理程序,但是然后需要在代码片段中进行向下转换,该代码将队列中的事件从队列中取出并将其传递到当前状态.(至少在这种情况下,大switch(eventID)只会在一个地方......).访客模式是避免向下转换的最佳方式(最佳实践)吗?
这是伪代码(我boost::shared_ptr在这个例子中传递,但无论如何都会发生向下转换):
enum EventID
{
EVENT_1,
EVENT_2,
...
};
class Event
{
EventID id;
public:
Event(EventID id):id(id){}
EventID id() const {return id;}
virtual ~Event() = 0;
};
class Event1 : public Event
{
int n;
public:
Event1(int n):Event(EVENT_1), n(n){}
int getN() const {return n;}
};
class Event2 : public Event
{
std::string s; …Run Code Online (Sandbox Code Playgroud) 如果CQS阻止命令返回状态变量,那么命令的一个代码怎么可能不成功?假设你不能依赖例外.
似乎任何请求/响应都违反了CQS.
所以看起来你会有一套"母亲可能我"的方法给出了命令返回的状态.多线程/多计算机应用程序中会发生什么?
如果我有三个客户端要求服务器的对象增加一个(并且对象的限制为0-100).所有人都检查它们是否可以但是一个人得到它 - 而另外两个不能,因为它只是达到了极限.这似乎是返回状态可以解决这里的问题.
我很困惑如何确定单个方法是否有一个责任,就像清洁代码一书中的以下代码一样
public Money calculatePay(Employee e) throws InvalidEmployeeType {
switch (e.type) {
case COMMISSIONED:
return calculateCommissionedPay(e);
case HOURLY:
return calculateHourlyPay(e);
case SALARIED:
return calculateSalariedPay(e);
default:
throw new InvalidEmployeeType(e.type);
}
}
Run Code Online (Sandbox Code Playgroud)
正如作者在这段代码中所说的那样:"...... 显然不止一件事.第三,它违反了单一责任原则(SRP),因为改变它的原因不止一个. " 乍一看我的代码我在想这个方法是如何违反SRP的,因为如果代码发生了变化,只有当有一个添加的员工类型但是我试图理解方法时才会成为switch语句我进一步想出了为什么它违反了上述原则.
我的假设是,因为方法的名称是这个方法calculatePay(Employee e)的唯一责任是支付计算,因为方法的名称建议但是因为在方法内部有一个过滤过滤Employee的类型,这个过滤现在是不同的或因此,另一项责任违反了SRP.我不知道我是否做对了.
块覆盖是否与分支覆盖相同,类似于它还是完全不同?
解决分支机构范围的Google链接:http://www.tutorialspoint.com/software_testing_dictionary/branch_testing.htm
我看到许多测试描述,例如在Mocha中使用方法前面的#符号.这个的目的和起源是什么?我多年来一直这样做,就像一个旅鼠,所以我觉得是时候问为什么了:)
describe('#myMethod()', function() { ... })
Run Code Online (Sandbox Code Playgroud) teamcity ×3
java ×2
unit-testing ×2
build ×1
c++ ×1
casting ×1
code-metrics ×1
downcast ×1
factory ×1
metrics ×1
objective-c ×1
single-responsibility-principle ×1
state ×1
testing ×1
wix ×1
wix3.5 ×1