testLogicalDoc = new LogicalDocumentImpl(-4);
assertTrue(testLogicalDoc==null);
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,我有一个断言条件,我想确保我不创建负大小的对象.它是封面下面的一个stringBuilder,它抛出NegativeArrayBoundsException,大小小于零.但我的junit测试在这里失败了.我不知道是否有任何其他方法可以确保没有使用负尺寸创建对象.有关如何测试它的任何想法?还是应该是Junit测试?
非常感谢,
-Pan
编辑:
@Test(expected=NegativeArraySizeException.class)
public void testCreate4b()
{
LogicalDocumentImpl testLogicalDoc = new LogicalDocumentImpl(-4);
}
Run Code Online (Sandbox Code Playgroud)
我正在LogicalDocumentImpl类中捕获异常,但仍然这个测试失败并出现断言错误,但只有当我尝试捕获断言错误时才成功..为什么这样?
假设我有一个程序,其中整数的值i永远不应该是负数.有没有办法可以插入全局assert(i>=0),以便每当i变为负数时报告错误.这在调试时非常有用.我不想在任何地方放置一个断言i操纵的值.
我的代码中有一个断言.就像是:
assert('is_string($var)');
Run Code Online (Sandbox Code Playgroud)
如果我为PHPUnit编写测试导致此断言失败并显示消息, Warning: assert(): Assertion "is_string($var)" failed in /path/to/file.php on line ###
而且,我的测试也失败了.我已经尝试根据文档添加@expectedException PHPUnit_Framework_Error_Warning到docblock ,但这没有帮助.我需要做些什么来使我的测试期望这个断言会失败?
我有一个测试方法......
[TestMethod]
public void MainViewModel_PropertiesReflectDataEntityProperties()
{
// Arrange
var facilityDataEntity = MockRepository.GenerateStub<FacilityDataEntity>();
var shopOrderDataEntity = MockRepository.GenerateStub<ShopOrderDataEntity>();
// Act
MainViewModel mainViewModel = new MainViewModel(facilityDataEntity, shopOrderDataEntity);
// Assert
Assert.AreSame(facilityDataEntity.Value, mainViewModel.FacilityValue);
}
Run Code Online (Sandbox Code Playgroud)
......并且测试通过了.但是,我还没有实现DataEntity属性到MainViewModel属性的映射!怎么会这样?我以为AreSame会检查两个引用是否指向同一个实例.
public class MainViewModel
{
private readonly FacilityDataEntity facilityDataEntity;
private readonly ShopOrderDataEntity shopOrderDataEntity;
public MainViewModel(FacilityDataEntity facilityDataEntity)
{
this.facilityDataEntity = facilityDataEntity;
}
public MainViewModel(FacilityDataEntity facilityDataEntity, ShopOrderDataEntity shopOrderDataEntity)
{
this.facilityDataEntity = facilityDataEntity;
this.shopOrderDataEntity = shopOrderDataEntity;
}
public ShopOrderDataEntity ShopOrderDataEntity
{
get { return shopOrderDataEntity; }
}
public FacilityDataEntity FacilityDataEntity
{
get { return …Run Code Online (Sandbox Code Playgroud) 以下方法是名为election_date的字段的setter,其类型为java.util.date.它是tomcat应用程序的一部分.
执行时,我在行上得到一个Null指针异常:
System.out.println("ELECTION DATE: " + this.election_date.toString());
Run Code Online (Sandbox Code Playgroud)
public void setElection_date(Date election_date) {
this.election_date = election_date;
assert (this.election_date != null);
assert (this.election_date.toString()) != null;
System.out.println("ELECTION DATE: " + this.election_date.toString());
}
Run Code Online (Sandbox Code Playgroud)
编辑:请不要告诉我这是垃圾收集.我可能稍微离开巴尔默峰,但距离那不远.
我已经定义了一个类型
type UnknownMapString map[string]interface{}
Run Code Online (Sandbox Code Playgroud)
我也有这样的方法
func (m UnknownMapString) Foo() {
fmt.Println("test!")
}
Run Code Online (Sandbox Code Playgroud)
跑步时我感到恐慌:
接口转换:接口是map [string] interface {},而不是main.UnknownMapString
map [string] interface {}从JSON输入中解组.
游乐场复制它 - > http://play.golang.org/p/kvw4dcZVNH
我认为你不能将接口作为方法的接收者,所以我们需要键入assert(not convert?)到Named Type,并使用Named Type作为方法的接收者.请让我知道我做错了什么.谢谢!
我正在寻找将测试表达式的语法,如果结果为false DEBUG并且缺少符号,则抛出异常.但不是在那里.
我知道我可以用:
#if !DEBUG
Trace.Assert(condition);
#endif
Run Code Online (Sandbox Code Playgroud)
而且我知道我可以使用:
#if !DEBUG
SomeGlobal.Production = true;
#endif
Run Code Online (Sandbox Code Playgroud)
所以我可以写:
Trace.Assert(SomeGlobal.Production && condition);
Run Code Online (Sandbox Code Playgroud)
避免在不同的地方有编译说明.
还有其他方法吗?
由于Java的assert关键字在Android上基本被打破,我即将实现一个断言类,可以配置为在发布版本中检查断言.
现在我可以这样做:
MyAssertion.assert(a != 2)
Run Code Online (Sandbox Code Playgroud)
AssertionException当表达式为false时抛出一个.但是,如何获取要传递给错误消息的表达式的String表示?
我有一些类型
type my_type_name =
| A of (float * float)
| B of (float * float)
| E
;;
Run Code Online (Sandbox Code Playgroud)
而且我知道我的代码中存在问题,如果p >= q在B (p, q)或中A (p, q).所以我想在类型中做出断言,这样如果我试着A (5, 1)让它通知我.
是否可以在类型构造函数中进行断言?应该怎么样?
我试图避免这样的事情:
assert (p < q) ; A(p, q)
Run Code Online (Sandbox Code Playgroud)
因为我在代码中有很多A或B对象.