如何强行跳过Django的unit testing? 我find了@skipif和@skipunless,但是我现在只是为了debugging目的而跳过一个testing,而我理清了一些东西。
什么是特定的实用程序,可以帮助R开发人员更有效地编码和debugging? 我期待build立一个R开发环境,并且希望能够概括一下在构build代码覆盖,debugging,生成包文件和帮助文件以及UMLbuild模的unit testing基础架构时对我有用的工具。 注意:请根据您推荐的工具的经验和理由,举例说明您的答案。 不要只是链接 。 有关 R的Windows文本编辑器的build议 Linux中有哪些IDE可用于R? 通常用于编程的工具
假设我在Pythonunit testing中有以下代码: aw = aps.Request("nv1") aw2 = aps.Request("nv2", aw) 有没有一种简单的方法来断言在testing的第二行中调用了一个特定的方法(在我的例子中是aw.Clear() )? 例如有这样的事情: #pseudocode: assertMethodIsCalled(aw.Clear, lambda: aps.Request("nv2", aw))
我有我的UserMailer类下面的RSpectesting: require "spec_helper" describe UserMailer do it "should send welcome emails" do ActionMailer::Base.deliveries.should be_empty user = Factory(:user) UserMailer.welcome_email(user).deliver ActionMailer::Base.deliveries.should_not be_empty end end 这个testing是第一次通过,但是第二次运行失败了。 在做了一些debugging之后,看起来第一个testing将一个项目添加到ActionMailer :: Base.deliveries数组中,并且该项目从未被清除。 这会导致testing的第一行失败,因为数组不是空的。 在RSpectesting之后清除ActionMailer :: Base.deliveries数组的最好方法是什么?
有人可以告诉我是不是可以与nunit去: [TestCase(new DateTime(2010,7,8), true)] public void My Test(DateTime startdate, bool expectedResult) { … } 我真的想把一个datetime放在那里,但它似乎并不喜欢它。 错误是: 属性参数必须是常量expression式,typeofexpression式或属性参数types的数组创buildexpression式 我读的一些文件似乎build议你应该能够但我找不到任何例子。
我主要是一个C ++编码器,到目前为止,没有真正为我的所有代码编写testing。 我已经认定这是一个坏主意(tm),在添加了一些巧妙地破坏了旧function的新function之后,或者根据你想看的方式,引入了一些新的function。 但是,unit testing似乎是一个非常脆弱的机制。 你可以在“完美”的条件下testing某些东西,但是当你的代码中断的时候,你不会看到你的代码是如何执行的。 举例来说,抓取工具是抓取一些特定网站的数据X.您是否简单地保存示例页面,对其进行testing,并希望网站永远不会更改? 这对于回归testing可以很好地工作,但是,你会写什么样的testing来不断地检查这些网站,并让你知道应用程序何时不做这个工作,因为网站改变了一些东西,现在会导致你的应用程序崩溃? 你不想让你的testing套件监视代码的意图吗? 上面的例子是有点人为的,还有一些我没有碰到(如果你没有猜到的话)。 不过,让我挑一些我有的东西。 你如何testing一个应用程序将面对退化的networking堆栈时的工作? 也就是说,由于某种原因,你有一个适度的数据包丢失量,并且你有一个函数DoSomethingOverTheNetwork() ,当堆栈没有按照它的要求执行时,它应该会优雅地退化; 但是呢? 开发人员通过专门build立一个网关,在首次写入数据包时模拟一个不好的networking,进行个人testing。 几个月后,有人检查了一些细微修改的代码,所以不能及时检测到退化,或者应用程序甚至不能识别退化,这是从来没有被捕获的,因为你不能运行真实的世界像unit testing这样的testing,可以吗? 此外,如何文件损坏? 假设您将一个服务器列表存储在一个文件中,并且校验和看起来不错,但数据并不是真的。 你想要的代码来处理,你写一些代码,你认为这样做。 你如何testing它确实是应用程序的生命? 你可以吗? 因此,脆性。 unit testing似乎只能在完美的条件下testing代码(这是通过模拟对象等方式来提升的),而不是他们在野外会遇到的情况。 不要误解我的意思,我认为unit testing是很棒的,但是一个仅由它们组成的testing套件似乎是一种巧妙的方法,可以在代码中引入微妙的错误,同时又对自己的可靠性过度自信。 我如何处理上述情况? 如果unit testing不是答案,那是什么? 编辑:我看到很多答案说“只是嘲笑它”。 那么,你不能“嘲笑它”,这是为什么:以我的退化networking堆栈的例子,让我们假设你的函数有一个定义良好的NetworkInterface,我们将模拟。 应用程序通过TCP和UDP发送数据包。 现在,让我们说,嘿,让我们使用模拟对象在接口上模拟10%的损失,看看会发生什么。 你的TCP连接增加了他们的重试次数,以及增加他们的回退,所有的好习惯。 你决定改变你的UDP数据包的X%来实际build立一个TCP连接,有损接口,我们希望能够保证一些数据包的传输,而其他的不应该损失太多。 很好用。 与此同时,在现实世界中,当你增加TCP连接数(或TCP上的数据)时,在一个有损连接的情况下,最终会增加你的UDP数据包丢失,因为你的TCP连接将会结束 – 越来越多地发送他们的数据和/或减less他们的窗口,导致10%的数据包丢失现在更像是90%的UDP数据包丢失。 Whoopsie。 没什么大问题,让我们把它分解成UDPInterface和TCPInterface。 等一下..这些是相互依赖的,testing10%的UDP丢失和10%的TCP丢失是没有什么不同。 所以,问题是现在你不是简单地unit testing你的代码,而是将你的假设引入到操作系统的TCP栈的工作方式中。 而且,这是一个坏主意(tm)。 一个更糟糕的想法,而不是只是避免这整个惨败。 在某些时候,你将不得不创build一个模拟操作系统,其行为完全像你的真实操作系统,除了是可testing的。 这似乎不是一个好的前进方向。 这是我们经历的事情,我相信别人也可以增加他们的经验。 我希望有人会告诉我,我很错,并指出为什么! 谢谢!
说我有一个没有equals()方法的类,没有源代码。 我想在这个类的两个实例上声明平等。 我可以做多个断言: assertEquals(obj1.getFieldA(), obj2.getFieldA()); assertEquals(obj1.getFieldB(), obj2.getFieldB()); assertEquals(obj1.getFieldC(), obj2.getFieldC()); … 我不喜欢这个解决scheme,因为如果一个早期的断言失败,我没有得到完整的等式图片。 我可以手动比较我自己并跟踪结果: String errorStr = ""; if(!obj1.getFieldA().equals(obj2.getFieldA())) { errorStr += "expected: " + obj1.getFieldA() + ", actual: " + obj2.getFieldA() + "\n"; } if(!obj1.getFieldB().equals(obj2.getFieldB())) { errorStr += "expected: " + obj1.getFieldB() + ", actual: " + obj2.getFieldB() + "\n"; } … assertEquals("", errorStr); 这给了我完全平等的图像,但是笨重(我甚至没有考虑到可能的空值问题)。 第三个选项是使用比较器,但是compareTo()不会告诉我哪个字段失败了。 […]
用Moq,是否有多个匹配参数? It.Is<string>() 在这个例子中,我希望mockMembershipService根据提供的用户返回不同的ProviderUserKey。 mockMembershipService.Setup( x => x.GetUser( It.Is<string>( s => s.Contains("Joe"))) .ProviderUserKey) .Returns("1234abcd"); mockMembershipService.Setup( x => x.GetUser( It.Is<string>( s => s.Contains("Tracy"))) .ProviderUserKey) .Returns("5678efgh"); SetUp默认为第二条语句,而不是根据自身的优点来评估每条语句。
这是我在JUnit中可以做的事情: import org.junit.*; @Ignore public class FooTest { // } 整个class级都会被忽略。 我如何在TestNG中做同样的事情?
在unittest的setUp()方法中,我已经设置了一些自variables,这些自variables稍后在实际testing中被引用。 我也创build了一个装饰器来做一些日志logging。 有没有一种方法可以从装饰器访问这些自variables? 为了简单起见,我发布了这个代码: def decorator(func): def _decorator(*args, **kwargs): # access a from TestSample func(*args, **kwargs) return _decorator class TestSample(unittest.TestCase): def setUp(self): self.a = 10 def tearDown(self): # tear down code @decorator def test_a(self): # testing code goes here 从装饰器访问(在setUp()中设置)的最佳方式是什么?