我需要通过编写一个实现的新mapper类来为NHibernate创建一个自定义类型.虽然覆盖大多数方法和属性相对简单,但我理解如何正确处理以下成员会遇到一些困难:IUserType
object Assemble(object cached, object owner);
object DeepCopy(object value);
object Disassemble(object value);
object Replace(object original, object target, object owner);
我不明白他们的目的是什么; 更重要的是,如何正确实施它们.我见过的大多数示例都只返回原始输入参数.
public object DeepCopy(object value)
{
return value;
}
public object Replace(object original, object target, object owner)
{
return original;
}
public object Assemble(object cached, object owner)
{
return cached;
}
public object Disassemble(object value)
{
return value;
}
Run Code Online (Sandbox Code Playgroud)
如何在实际情况或更复杂的情况下正确实现这些方法?
在Windows中为Subversion编写钩子的最佳方法是什么?据我所知,只能使用可执行文件.那么最佳选择是什么?
我有一个测试用例:
class LoginTestCase(unittest.TestCase):
...
Run Code Online (Sandbox Code Playgroud)
我想在不同的测试用例中使用它:
class EditProfileTestCase(unittest.TestCase):
def __init__(self):
self.t = LoginTestCase()
self.t.login()
Run Code Online (Sandbox Code Playgroud)
这引起了:
ValueError: no such test method in <class 'LoginTest: runTest`
Run Code Online (Sandbox Code Playgroud)
我查看了调用异常的unittest代码,看起来测试不应该以这种方式编写.是否有标准的方法来编写您要测试的内容,以便以后的测试可以重用它?或者有解决方法吗?
我现在添加了一个空runTest
方法LoginTest
作为一个可疑的解决方法.
考虑到调试数据文件可用(PDB)并使用System.Reflection或其他类似框架(如Mono.Cecil),如何以编程方式检索源文件名和类型或类型成员的行号声明.
例如,假设您已将此文件编译为程序集:
C:\ MyProject的\ Foo.cs
1: public class Foo
2: {
3: public string SayHello()
4: {
5: return "Hello";
6: }
7: }
Run Code Online (Sandbox Code Playgroud)
怎么做这样的事情:
MethodInfo methodInfo = typeof(Foo).GetMethod("SayHello");
string sourceFileName = methodInfo.GetSourceFile(); // ?? Does not exist!
int sourceLineNumber = methodInfo.GetLineNumber(); // ?? Does not exist!
Run Code Online (Sandbox Code Playgroud)
sourceFileName将包含"C:\ MyProject\Foo.cs",sourceLineNumber将等于3.
更新:System.Diagnostics.StackFrame
确实能够获取该信息,但仅限于当前执行调用堆栈的范围.这意味着必须首先调用该方法.我想获得相同的信息,但不调用类型成员.
我正在使用python unittest来测试其他一些外部应用程序,但是需要花费太多时间来逐个运行测试.
我想知道如何通过使用多核的功能来加速这个过程.我可以调整unittest来并行执行测试吗?怎么样?
这个问题不能python GIL限制,因为事实上不是python代码需要时间,而是我执行的外部应用程序,目前通过os.system()
.
我读到MbUnit是关于类固醇的Nunit,但我不明白为什么.从我在这里读到的,我在这里说Nunit比MbUnit更受欢迎.其中一个主要原因是因为它具有流畅的界面.这是唯一的原因吗?
为什么我更喜欢MbUnit而不是Nunit,反之亦然?谢谢!
我知道Ctrl+ F9运行一个文件.
怎么运行它们?
如果没有这样的东西,如何将一个键盘快捷键绑定到它?
我最近开始对我为iPhone编写的应用程序进行单元测试.我有创建自己的测试的基础知识,即使它看起来有点次优.但是,我在使用gcov设置代码覆盖率分析时遇到了麻烦.
我按照这里的说明进行操作:http://www.cubiclemuses.com/cm/articles/2009/05/14/coverstory-on-the-iphone/,在其他地方重复得非常相似.我试过在他们的Mac工具箱中使用谷歌的AppleScript,以防我在Xcode中输入错误.
我已经使用Apple的iPhoneUnitTests示例作为基础项目,只需运行Google的AppleScript就可以针对CalcTests目标启用代码覆盖测试,以获得一个源代码不足的自动化示例.无论我使用什么场景,我自己的代码,Apple,手动设置正确的变量或让Google的AppleScript为我做,我得到的只是测试运行完成后调试控制台中的这些错误:
profiling:/Users:Cannot create directory
profiling:/Users/jpo/Downloads/iPhoneUnitTests/build/iPhoneUnitTests.build/Debug-iphoneos/CalcTesting.build/Objects-normal/armv6/CalcViewController.gcda:Skip
profiling:/Users:Cannot create directory
profiling:/Users/jpo/Downloads/iPhoneUnitTests/build/iPhoneUnitTests.build/Debug-iphoneos/CalcTesting.build/Objects-normal/armv6/Calculator.gcda:Skip
profiling:/Users:Cannot create directory
profiling:/Users/jpo/Downloads/iPhoneUnitTests/build/iPhoneUnitTests.build/Debug-iphoneos/CalcTesting.build/Objects-normal/armv6/CalcAppDelegate.gcda:Skip
profiling:/Users:Cannot create directory
profiling:/Users/jpo/Downloads/iPhoneUnitTests/build/iPhoneUnitTests.build/Debug-iphoneos/CalcTesting.build/Objects-normal/armv6/main.gcda:Skip
Run Code Online (Sandbox Code Playgroud)
没有创建gcda文件,因此我无需分析.任何有关这方面的帮助将不胜感激.
我已经为数据库中的事件定义了一些时间戳auto_now_add
,因为信息应该与事件存储时的时间戳一起存储.
事件的描述是这样的
class NewEvent(models.Model):
'''
Individual event
'''
name = models.CharField(max_length=100)
quantity = models.FloatField(null=True)
timestamp = models.DateTimeField(auto_now_add=True)
Run Code Online (Sandbox Code Playgroud)
为了测试模块,我在test.py
文件中的数据库中生成一些信息,这样:
for event in EVENT_TYPES:
time = datetime.datetime.now() - datetime.timedelta(days=1)
for i in range(48):
time = time.replace(hour=i / 2)
NewEvent(name=event,
timestamp=time,
quantity=i).save()
Run Code Online (Sandbox Code Playgroud)
我必须生成具有昨天时间戳的事件(模块将汇总它们).问题是您无法覆盖时间戳.时间戳是它生成事件时的时间戳,文档非常清楚地说明了这一点.
那么,如何使用合适的时间戳生成测试数据呢?我有几个想法:
_
if testing:
timestamp = models.DateTimeField(auto_now_add=True)
else:
timestamp = models.DateTimeField(auto_now_add=False)
Run Code Online (Sandbox Code Playgroud)
或者也许有更简单的方法来做到这一点......任何想法?
我正在使用QUnit,这非常棒.
我已将我的JS应用程序包含在(function () {})();
沙箱中.这隐藏了许多我不想公开的代码,但我还需要测试该代码.
以下是一个如何工作的示例:
(function () {
var PublicAPI = window.PublicAPI = {};
PublicAPI.publicFunction = function (foo) {
PrivateAPI.privateFunction(foo);
return 'bar';
};
var PrivateAPI = {};
PrivateAPI.privateFunction: function (foo) {
// Make secret stuff that never gets returned to the public
// Could be an AJAX call.
}
})();
Run Code Online (Sandbox Code Playgroud)
所以在这里我可以轻松进行单元测试PublicAPI.publicFunction
,但我将如何进行测试PrivateAPI.privateFunction
?
unit-testing ×7
python ×3
c# ×2
cocoa ×1
django ×1
eclipse ×1
gcov ×1
hook ×1
iphone ×1
javascript ×1
mbunit ×1
multicore ×1
ncommon ×1
nhibernate ×1
nunit ×1
performance ×1
pydev ×1
qunit ×1
reflection ×1
sandbox ×1
svn ×1
svn-hooks ×1