我们正在编写针对测试SQL Server数据库运行的ASP.NET应用程序的单元测试.也就是说,ClassInitialize方法使用测试数据创建一个新数据库,ClassCleanup删除数据库.我们通过从代码运行.bat脚本来完成此操作.
测试中的类被赋予连接字符串,该字符串连接到单元测试数据库而不是生产数据库.
我们的问题是,数据库包含全文索引,需要使用测试数据完全填充,以便我们的测试按预期运行.
据我所知,全文索引总是在后台填充.我希望能够:
我目前的解决方案是在类初始化方法结束时强制延迟 - 5秒似乎工作 - 因为我在文档中找不到任何东西.
OCR软件是否能够可靠地将以下图像转换为值列表?
更新:
更详细的任务如下:
我们有一个客户端应用程序,用户可以在其中打开报告.此报告包含值表.但并非每个报告看起来都一样 - 不同的字体,不同的间距,不同的颜色,也许报告包含许多具有不同行数/列数的表...
用户选择包含表格的报告区域.用鼠标.
现在我们要将选定的表转换为值 - 使用我们的OCR工具.
在用户选择矩形区域时,我可以要求提供额外信息以帮助进行OCR过程,并要求确认已正确识别这些值.
它最初将是一个实验性项目,因此很可能使用OpenSource OCR工具 - 或者至少一个不需要花费任何费用用于实验目的的工具.
有没有办法获取当前正在运行的测试的名称?
一些(大大简化)代码可能有助于解释.我想避免"test1" / "test2"
在调用中重复performTest
:
describe("some bogus tests", function () {
function performTest(uniqueName, speed) {
var result = functionUnderTest(uniqueName, speed);
expect(result).toBeTruthy();
}
it("test1", function () {
performTest("test1", "fast");
});
it("test2", function () {
performTest("test2", "slow");
});
});
Run Code Online (Sandbox Code Playgroud)
更新 我看到我需要的信息是:
jasmine.currentEnv_.currentSpec.description
Run Code Online (Sandbox Code Playgroud)
或者可能更好:
jasmine.getEnv().currentSpec.description
Run Code Online (Sandbox Code Playgroud) 有谁知道如何在SVG中定义动画圆弧/圆弧,这样圆弧从0度开始到360度结束?
我在.NET 4.0项目中嵌入了字符串资源:Strings.resx和Strings.de.resx.
在生产代码中,将检索正确的本地化字符串,具体取决于Strings.Culture的值:
Strings.Culture = new Culture("de");
string deString = Strings.Welcome; // 'Willkommen'
Strings.Culture = new Culture("en");
string enString = Strings.Welcome; // 'Welcome'
Run Code Online (Sandbox Code Playgroud)
但是在我的单元测试代码中(使用MSTest),"Strings.de.resx"中的字符串永远不会被返回 - 我只能从Strings.resx中获取字符串,无论是什么值Strings.Culture
或者Threads.CurrentThread.CultureUICulture
.
有人可以帮忙吗?
当我运行我的(VS 2008 .NET)单元测试的Release版本时,我得到以下异常:
System.IO.FileLoadException:无法加载文件或程序集'arcVegaORM,Version = 1.0.3856.24327,Culture = neutral,PublicKeyToken = 0dd85ae1d99ddbee'或其依赖项之一.定位的程序集的清单定义与程序集引用不匹配.(HRESULT异常:0x80131040).
我运行调试构建测试时没有得到异常.
单元测试框架将旧版"arcVegaORM"程序集复制到TestResults\Out文件夹中.我不知道它从哪里获得旧版本 - 它与项目bin\Release文件夹中的版本不匹配.
我开始认为VS.NET单元测试框架存在一个错误,并且它已经缓存了旧版本.
请考虑我最近在代码库中看到的以下示例代码:
void ClassA::ExportAnimation(auto_ptr<CAnimation> animation)
{
... does something
}
// calling method:
void classB::someMethod()
{
auto_ptr<CAnimation> animation (new CAnimation(1,2));
ClassA classAInstance;
classAInstance.ExportAnimation(animation)
... do some more stuff
}
Run Code Online (Sandbox Code Playgroud)
我不喜欢这样 - 宁愿写它:
void ClassA::ExportAnimation(CAnimation* animation)
{
... does something
}
// calling method:
void classB::someMethod()
{
auto_ptr<CAnimation> animation (new CAnimation(1,2));
ClassA classAInstance;
classAInstance.ExportAnimation(animation.get())
... do some more stuff
}
Run Code Online (Sandbox Code Playgroud)
但这确实是一个问题?
以下代码演示了实体框架存在的问题。假设“ bob”在会话表中有很多记录。
我希望sessionCountB比sessionCountA小1:
using (var context = new MyEFContext)
{
int sessionCountA = (from a in context.sessions
where a.user = 'bob' select a).Count();
sessions firstSession = (from a in context.sessions
where a.user = 'bob').FirstOrDefault();
context.sessions.DeleteObject(firstSession);
int sessionCountB = (from a in context.sessions
where a.user = 'bob' select a).Count();
// I expect sessionCountB == sessionCountA - 1
}
Run Code Online (Sandbox Code Playgroud)
我知道DeleteObject仅标记要删除的对象-SaveChanges在数据库上进行删除。
但是在调用SaveChanges之前,是否不应该从我对同一数据模型执行的其他查询中排除已删除的对象吗?
我尝试使用元组指定 nUnit 测试用例,但在 VisualStudio 中收到编译器错误。
这个简单的例子演示了我正在尝试做的事情:
[TestCase((1, 2), (3, 5))]
public void TestRangeOverlaps((int start, int end) firstRange, (int start, int end) secondRange)
{
}
Run Code Online (Sandbox Code Playgroud)
如果这是可能的,我错过了什么?
我可以限制特定命名空间中的类引用另一个特定命名空间中的类吗?两个名称空间都存在于同一.NET程序集中.
例:
namespace LegacyCode
{
class LegacyClass { ... }
}
namespace NewCode
{
class NewClass {...}
}
Run Code Online (Sandbox Code Playgroud)
我不希望'NewCode'中的类能够引用'LegacyCode'中的类.
选项:
有没有人有任何其他想法?
unit-testing ×4
c# ×3
.net ×1
animation ×1
auto-ptr ×1
c++ ×1
class-design ×1
coding-style ×1
geometry ×1
jasmine ×1
javascript ×1
mstest ×1
namespaces ×1
nunit ×1
ocr ×1
population ×1
sql-server ×1
svg ×1
valuetuple ×1