将断言放入代码中有什么意义?自信编程有什么好处?
private void WriteMessage(string message)
{
Debug.Assert(message != null, "message is null");
File.WriteAllText(FILE_PATH, message);
}
Run Code Online (Sandbox Code Playgroud)
例如,我们可以检查消息变量并在此处抛出异常.为什么我在这里使用assert?或者这是一个错误的例子,看到断言的好处?
是否在jUnit中等效于NUnit的ExpectedException或Assert.Throws <>?
我正在尝试使用一个简单的代码org.testng.Assert来断言2个用例.在第一个用例中,我Fail正确地声明了2个不相等的值.
但是在第二个用例中,当我在try-catch块中断言2个不相等的值时,结果总是返回为 Pass
我的代码如下:
package demo;
import org.testng.Assert;
import org.testng.annotations.Test;
public class Q43710035
{
@Test
public void test1()
{
System.out.println("Within test1");
int a = 12;
int b =20;
Assert.assertEquals(a, b);
}
@Test
public void test2()
{
System.out.println("Within test2");
int a = 12;
int b =20;
try
{
Assert.assertEquals(a, b);
}catch(Throwable t)
{
System.out.println("Exception Occurred");
}
}
}
Run Code Online (Sandbox Code Playgroud)
我得到的结果是:
Within test1
Within test2
Exception Occurred
PASSED: test2
FAILED: test1
java.lang.AssertionError: expected [20] but found [12]
at org.testng.Assert.fail(Assert.java:94) …Run Code Online (Sandbox Code Playgroud) 如何在Perl中检查变量是否具有特定值?是否有命令停止脚本的执行以查找其中的一些变量?
我想知道我是否可以使用Pythonic插入实践:
assert 0, (foo, bar)
Run Code Online (Sandbox Code Playgroud)
以无debuger的方式调试脚本?
我总是检查公共函数的参数,并在出错时抛出异常.(对于私人助手,我使用断言).
像这样:
if( a < 0 || a >= b )
throw new IllegalArgumentException("'a' must be greater or equal to 0 and
smaller than b ");
Run Code Online (Sandbox Code Playgroud)
但是编写这些错误消息总是令我很烦.这条消息对我来说似乎是多余的,因为消息只是对陈述的否定
a < 0 || a >= b
Run Code Online (Sandbox Code Playgroud)
.
我经常会通过重构(在eclipse中)重命名变量,然后消息不会反映更改.或者我改变条件而忘记更改消息.
如果我能写下这样的东西,那就太好了:
assertArgument(a >= 0 && a < b);
Run Code Online (Sandbox Code Playgroud)
这应该引发一个类似的消息的IllegalArgumentException
"violated argument assertion: a >= 0 && a < b."
Run Code Online (Sandbox Code Playgroud)
在C中你可以编写一个宏(实际上在C断言中只是一个宏).有没有一种简单的方法在java中做这样的事情?
谢谢!
phpUnit显示运行的测试次数和断言次数.我目前执行python的单元测试的方式,只显示运行的测试次数.有没有办法计算断言的数量?
我目前正在尝试编写功能测试但是在登录并重定向到新页面后我遇到了问题.一切正常,直到最后一次断言.重定向工作正常,重定向后的内容页面没问题,但我在上次断言时收到错误:断言false为真.在这里我没有发现任何可以帮助我解决类似问题
这是代码:
class DefaultControllerTest extends WebTestCase
{
public function testIndex()
{
$client = static::createClient(array(),
array(
'HTTP_HOST' => 'locahost'
));
$crawler = $client->request('GET', '/login');
echo $client->getRequest()->getUri();
$form = $crawler->selectButton('Login')->form(array(
'_username' => 'user',
'_password' => 'pass',
),'POST');
$client->submit($form);
$this->assertTrue($client->getResponse()->isRedirect());
$client->followRedirect();
echo $client->getRequest()->getUri();
print_r( $client->getResponse()->getContent());
$this->assertTrue($crawler->filter('html:contains("New")')->count() > 0);
}
Run Code Online (Sandbox Code Playgroud)
}
目前,我们正在将使用一些代码Assert.IsTrue(),Assert.AreEqual(),Assert.IsNotNull(),等的基本单元测试断言库C#
我们要使用FluentAssertions,例如 value.Should().BeNull().
我Assert.Fail()在某些地方使用了一些测试。我想用什么来有效地替换那些,因为我们要删除每个“ Assert。*”,而我在FluentAssertions中找不到等效的东西?
这是一个例子
[TestMethod, TestCategory("ImportantTest")]
public void MethodToTest_Circumstances_ExpectedResult()
{
// Arrange
var variable1 = new Type1() { Value = "hello" };
var variable2 = new Type2() { Name = "Bob" };
// Act
try
{
MethodToTest(variable1, variable2);
// This method should have thrown an exception
Assert.Fail();
}
catch (Exception ex)
{
ex.Should().BeOfType<DataException>();
ex.Message.Should().Be(Constants.DataMessageForMethod);
}
// Assert
// test that variable1 was changed by the method
variable1.Should().NotBeNull();
variable1.Value.Should().Be("Hello!");
// test …Run Code Online (Sandbox Code Playgroud) 我在我的视图中有带有文本和 html 内容的 EmailMultiAlternatives 对象:
email = EmailMultiAlternatives(subject=subject, body=message, from_email=sender, to=recipient)
email.attach_alternative(messageHTML, 'text/html')
Run Code Online (Sandbox Code Playgroud)
当我测试消息正文属性的内容包含文本版本时,我不知道如何断言 html 内容:
self.assertHTMLEqual(mail.outbox[0].body, message) # This test passes
self.assertHTMLEqual(mail.outbox[0].<???>, messageHTML) # But here I don't know what to do
Run Code Online (Sandbox Code Playgroud) 在 Python 中,我可以向断言添加自定义消息以帮助代码开发:
assert False, "Expected true"
Run Code Online (Sandbox Code Playgroud)
我怎样才能在 Julia 中做同样的事情?