如何通过单元测试计算布局的矩形?

时间:2011-07-27 17:30:45

标签: wpf unit-testing

我要按Pushing read-only GUI properties back into ViewModel

中的建议编写一些附加属性

我写过以下单元测试:

    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));
    }

这太天真了,矩形的ActualWidth为0,因为没有计算布局。

是否有一种简单的方法可以获得一个矩形,并计算它的布局。

我尝试将它添加到StackPanel并调用Arrange(new Rect(0,0,20,20)),但仍然得到一个ActualWidth / ActualHeight = 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));
    }

1 个答案:

答案 0 :(得分:2)

我没有看到你叫测量。这应该在Arrange之前调用,否则Arrange会失败,因为所有的DesiredSize都是0,0。

myStackPanel.Measure(new Size(20, 20));
myStackPanel.Arrange(new Rect(0, 0, 20, 20));