我的公司在MS BI堆栈(SQL Server报告服务,分析服务和集成服务)上投入了大量资金,但我想看一下看似最受关注的开源替代Pentaho的内容.
我已经安装了一个版本,并且我非常轻松地完成了它.这很好.但我还没有时间开始将它用于实际工作以彻底了解包装.
你们有没有任何关于Pentaho与MS BI的利弊有什么见解,或者这些比较的任何链接?
非常感激!
sql-server ssas pentaho reporting-services business-intelligence
我在VS2008的当前解决方案中有大约650个NUnit测试,但其中40个被分类为"LongRunning"或"Integration".每次我做完更改并运行我的测试套件时,我都不希望这些运行(仅当我特别要求它时,并且在设定时间在CI上).
使用TestDriven.Net进行设置很简单:工具 - >选项 - > TestDriven.Net - >排除类别中的测试
不过,我想使用ReSharper附带的漂亮用户界面.我没有找到任何方法来设置ReSharper不运行某些类别.
有没有人这样做过?可以吗?
我正在尝试在其他项目中重用我的ASP用户控件,并遇到了问题.我已经在http://weblogs.asp.net/scottgu/archive/2005/08/28/423888.aspx上阅读了ScottGu的帖子并试图遵循他的模式,但运行时我的控件的子控件没有被初始化.
我的设置:我正在使用Visual Studio 2008我已经创建了一个解决方案来保存我想要分发给其他几个解决方案的控件.此解决方案包含:
这背后的想法是Innermost包含功能,而Outer包含使Innermost -controls在特定框架中工作所需的任何特殊修改.
ClassLibrary有这样的代码(这是我做的一个演示设置,以确保它是一个ASP问题,而不是我正在做的其他事情):
using System;
namespace ClassLibrary {
public class LibraryClass {
public long getLong() {
return DateTime.Now.Ticks;
}
public string getString() {
return DateTime.Now.ToString();
}
}
}
Run Code Online (Sandbox Code Playgroud)
Innermost引用库项目并且工作正常.这是此项目中UserControl的示例:
<%@ Control Language="C#" AutoEventWireup="true"
CodeBehind="WebUserControl1.ascx.cs"
Inherits="Innermost.UserControls.WebUserControl1" %>
<asp:Label ID="testLabel" runat="server"/>
Run Code Online (Sandbox Code Playgroud)
代码隐藏:
using System;
using System.Web.UI;
using ClassLibrary;
namespace Innermost.UserControls {
public partial class WebUserControl1 : UserControl {
protected void Page_Load(object sender, EventArgs e) {
LibraryClass c = new LibraryClass(); …
Run Code Online (Sandbox Code Playgroud) 我在设置对象上的Equals方法的测试时遇到问题.
有问题的对象由此接口定义:
public interface IHours {
ITimeOfDay OpenAt { get; set; }
ITimeOfDay CloseAt { get; set; }
DateTime ValidFrom { get; set; }
DateTime ValidTo { get; set; }
bool isCovered(DateTime time);
}
Run Code Online (Sandbox Code Playgroud)
它包含对ITimeOfDay的引用,如下所示:
public interface ITimeOfDay {
DateTime Time { get; set; }
int Hour { get; }
int Minute { get; }
int Second { get; }
}
Run Code Online (Sandbox Code Playgroud)
现在我想要等待时间:IHours检查OpenAt和CloseAt IHours.为了进行设置,我尝试将这些属性值存根,只返回true和false,具体取决于我的特定测试需要它们.
[SetUp]
public virtual void SetUp() {
mocks = new MockRepository();
defaultHours = getHours();
otherHours = getHours();
} …
Run Code Online (Sandbox Code Playgroud) 使用精细的模拟框架MoQ,我遇到了一个有点令人惊讶的方面(我不喜欢惊喜).我正在嘲笑一个应该在方法调用后添加到集合中的类,如下所示:
public class SomeClass{
}
public class Container {
private List<SomeClass> classes = new List<SomeClass>();
public IEnumerable<SomeClass> Classes {
get {
return classes;
}
}
public void addSomeClass(SomeClass instance) {
classes.Add(instance);
}
}
[Test]
public void ContainerContainsAddedClassAfterAdd() {
var mockSomeClass = new Mock<SomeClass>();
mockSomeClass.Setup(c => c.Equals(mockSomeClass.Object)).Return(true);
var Container = new Container();
Container.addSomeClass(mockSomeClass.Object);
Assert(Container.Classes.Contains(mockSomeClass.Object));
}
Run Code Online (Sandbox Code Playgroud)
这很好用,模拟被添加到Container
集合中,并且Equals
模拟方法的设置确保IEnumerable.Contains()
返回true.然而,总有一些复杂因素.我真正嘲笑的课程并不像我们那么简单SomeClass
.它是这样的:
public class SomeClassOverridingEquals{
public virtual Equals(SomeClassOverridingEquals other) {
return false;
}
public override Equals(object obj) {
var …
Run Code Online (Sandbox Code Playgroud)