Wpf 如何通过单元测试计算出一个矩形布局?
我打算按照中的建议写一些附加属性 我编写了以下单元测试:Wpf 如何通过单元测试计算出一个矩形布局?,wpf,unit-testing,Wpf,Unit Testing,我打算按照中的建议写一些附加属性 我编写了以下单元测试: private const double Dimension = 10.0; [Test] [RequiresSTA] public void Gets_ActualWidth() { var rectangle = new Rectangle() { Width = Dimension, Height = Dimension }; double actualWid
private const double Dimension = 10.0;
[Test]
[RequiresSTA]
public void Gets_ActualWidth()
{
var rectangle = new Rectangle() { Width = Dimension, Height = Dimension };
double actualWidthMeasurement = Measurements.GetActualWidth(rectangle);
Assert.That(actualWidthMeasurement, Is.EqualTo(Dimension));
}
但这太幼稚了,矩形的实际宽度为0,因为没有计算布局
有没有一个简单的方法,我可以得到一个矩形与它的布局计算
我尝试将其添加到StackPanel并调用Arrange(new Rect(0,0,20,20)),但仍然得到一个实际宽度/实际高度=0.0d的矩形
解决方案
[Test]
[RequiresSTA]
public void Gets_ActualWidth()
{
var rectangle = new Rectangle() { Width = Dimension, Height = Dimension};
rectangle.Measure(new Size(20, 20));
rectangle.Arrange(new Rect(0, 0, 20, 20));
double actualWidthMeasurement = Measurements.GetActualWidth(rectangle);
Assert.That(actualWidthMeasurement, Is.EqualTo(Dimension));
}
我看不出你叫Measure。应在Arrange之前调用,否则Arrange将失败,因为所有内容的DesiredSize均为0,0
myStackPanel.Measure(new Size(20, 20));
myStackPanel.Arrange(new Rect(0, 0, 20, 20));
我看不出你叫Measure。应在Arrange之前调用,否则Arrange将失败,因为所有内容的DesiredSize均为0,0
myStackPanel.Measure(new Size(20, 20));
myStackPanel.Arrange(new Rect(0, 0, 20, 20));
那太好了,谢谢,我也不需要StackPanel,请参阅我的工作单元测试编辑。在这种情况下为真。但是,有些对象确实需要添加到父对象中(例如,如果您希望确保应用模板)。这很好,谢谢,我也不需要StackPanel,请参阅我的编辑以获得工作单元测试。对于这种情况,为True。但是,某些对象确实需要添加到父对象中(例如,如果要确保应用模板)。